Page 1 sur 1

Suprimer un caractère, et non le remplacer par un espace.

Posté : 31 déc. 2005, 04:21
par Nico128
Salut tout le monde...! J'ai une fonction qui remplace les caractère ÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõ en caractère sans accent :
function suppaccents($titre){
$accents = "ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ :,.;?!~'´()/&%*\"$[]{}|";
$ssaccents = "abcdefghijklmnopqrstuvwxyzAAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn-----------------------";
return(strtr($titre,$accents,$ssaccents));
} 
Mais pour les caractère spéciaux comme ceux là :,.;?!~'´()/&%*\"$[]{}| jaimerais pouvoir les suprimer de la chaine, et pas simplement les remplacé par un espace ou alors pas un tiret -

Si quelqun sait...

merci d'avance :D

Posté : 31 déc. 2005, 04:49
par Truc

Posté : 31 déc. 2005, 11:07
par Cyrano
Proposition :
<?php
function suppaccents($titre)
{
    $accents     = "ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ";
    $ssaccents   = "abcdefghijklmnopqrstuvwxyzAAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn";
    $speciaux    = " :,.;?!~'´()/&%*\"$[]{}|";
    $chssaccent  = strtr($titre,$accents,$ssaccents);
    $chsscarspec = str_replace($speciaux, "", $chssaccent);
    return($chsscarspec);
}
?>

Posté : 31 déc. 2005, 14:43
par Nico128
Merci d'avoir répoondu.

Mais c'est bizard, ça ne marche pas. Les accents sont bien remplacés par des caractères sans accent, mais les caractères spéciaux reste dans la chaine :?

Aufaite jai jamais créé une fonction (celle la je lai trouvé sur un site) mais jai une autre question :
function suppaccents($titre) 
Pour la variable $titre, il faut aussi que ma chaine aie comme variable $titre c'est sa ?

Merci d'avance

Posté : 31 déc. 2005, 15:59
par Cyrano
Non, la fonction reçoit un paramètre ici nommé "$titre" : son utilisation est la suivante :
$texte = "bla bla...";
/* On traite le texte en faisant appel à la fonciton en envoyant le paramètre attendu */
$retour = suppaccents($texte);
Comme tu peux voir, le nom de la variable envoyée en paramètre lors de l'appel est différent du nom du paramètre inscrit dans la fonction elle-même, mais c,est sans imoprtance, PHP va utiliser le contenu et non le contenant, les variables étant les contenants.

Posté : 31 déc. 2005, 16:33
par Nico128
Ok merci!

Et pour ce problème, d'ou ça vient ?

Posté : 31 déc. 2005, 18:33
par Truc
je n'avais pas donné plus d'infos sur mon post car j'estimais que l'exemple de la doc était très bien :?

Tiré de la doc:
// Génère : Bnjr l mnd
$voyelles = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
echo $consonnes = str_replace($voyelles, "", "Bonjour le monde");
donc pour ton cas:
$speciaux    = array(":",",",".",";","?","!","~","'","´","(",")","/","&","%","*","\\","\"","$","[","]","{","}","|")
$chsscarspec = str_replace($speciaux, "", $chssaccent);
Il faut placer les caratères dans un array.

Posté : 31 déc. 2005, 19:20
par Nico128
Effectivement ça marche maintenant :D

Merci beaucoup.

Et pour la doc, jai toujours un peu du mal a comprendre leur explication.

Merci encore