Suppression de "é" dans une chaine.
4 messages
• Page 1 sur 1
-

biscuit - WRInaute impliqué

- Messages: 519
- Inscription: 5 Juin 2006
Suppression de "é" dans une chaine.
Salut toutes et tous,
J'ai un petit problème incomprehensible pour moi en supprimant les accents dans une chaine avec:
Les lettres accentuées sont bien remplacée par la lettre sans accent à l'exception des "e" (soit èéêë) qui sont remplacés par une chaine vide "".
Quelqu'un a déjà eu ça ?
J'ai un petit problème incomprehensible pour moi en supprimant les accents dans une chaine avec:
- Code: Tout sélectionner
$ret = strtr($str, "ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ",
"AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy");
Les lettres accentuées sont bien remplacée par la lettre sans accent à l'exception des "e" (soit èéêë) qui sont remplacés par une chaine vide "".
Quelqu'un a déjà eu ça ?
-

hebmaster - WRInaute passionné

- Messages: 1133
- Inscription: 22 Déc 2005
Voila une fonction qui permet de supprimer ts les caractères spéciaux(et remplace le vide par des tirets):
- Code: Tout sélectionner
function convert_for_uri($text) {
// Définition du séparateur
define("SEPARATOR", "-");
$tofind = "àáâãäåòóôõöøèéêëçìíîïùúûüÿñ"; // Lettre accentuées
$replac = "aaaaaaooooooeeeeciiiiuuuuyn"; // Equivalant non accentué
// Mise en minuscule + suppression des lettres accentuées par leur équivalant non accentué
$text = strtr(strtolower($text),$tofind,$replac);
// Remplacement de caractère non alphanumérique par un séparateur
$text = ereg_replace("[^a-z0-9]", SEPARATOR, $text);
// Suppression des doubles séparateurs
while (strstr($text, SEPARATOR . SEPARATOR))
$text = str_replace(SEPARATOR . SEPARATOR, SEPARATOR, $text);
// Retour avec suppression d’un possible séparateur en fin de chaîne
return(ereg_replace(SEPARATOR . "$", "", $text));
}
-

biscuit - WRInaute impliqué

- Messages: 519
- Inscription: 5 Juin 2006
Ouais merci mais c'est la même fonction que j'ai déjà (en un peu plus évoluée).
J'ai l'impression que c'est un problème d'encodage. Je suis en UTF8 et si fais
Ca me retourne
Dans mon document j'ai bien le charset UFT8 de définit, dans php.ini j'ai bien default_charset = "UTF-8" et dans httpd.conf UTF8 est bien définit. Tout le reste du site tourne en utf8 et il n'y a pas de problème...
Il y a autre chose à paramétrer ?
J'ai l'impression que c'est un problème d'encodage. Je suis en UTF8 et si fais
- Code: Tout sélectionner
print strtr("Méchant", "ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ", "AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy");
Ca me retourne
- Code: Tout sélectionner
My�chant
Dans mon document j'ai bien le charset UFT8 de définit, dans php.ini j'ai bien default_charset = "UTF-8" et dans httpd.conf UTF8 est bien définit. Tout le reste du site tourne en utf8 et il n'y a pas de problème...
Il y a autre chose à paramétrer ?
-

biscuit - WRInaute impliqué

- Messages: 519
- Inscription: 5 Juin 2006
Bon j'ai contourné le prob par de la bricole de chez bricole... ça me plaît pas trop, mais ça fonctionne...
- Code: Tout sélectionner
$str = "Méchant";
$str = htmlentities($str,ENT_NOQUOTES,'UTF-8');
$str = strtolower($str);
$replace = array(
"á" => "a", "â" => "a", "à" => "a", "ä" => "a",
"é" => "e", "è" => "e", "ê" => "e", "ë" => "e",
"î" => "i", "ï" => "i",
"û" => "u", "ü" => "u", "ù" => "u",
"ô" => "o", "ö" => "o",
"ç" => "c"
);
foreach($replace as $key => $val) $str = str_replace($key, $val, $str);
print $str;
4 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- [ resolu ] remplacer dans une chaine "d'" par &quo
- regexp pour "tout sauf CETTE chaîne"
- Nombre de "-" dans une chaine de caracteres
- Compression "page speed" like à la chaine
- Intérêt d'une "chaîne de confiance"
- "Constante chaîne non terminée" introuvable !!!!!
- URL Removals indique "Suppression de site" ! Normal ?
- convertir la chaine '\n' en caractère "\n"
- Suppression d'URL "rewrittées" : quelle méthode ?
- Suppression d'url "cachées"
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
