Suppression de "é" dans une chaine.

WRInaute occasionnel
Salut toutes et tous,

J'ai un petit problème incomprehensible pour moi en supprimant les accents dans une chaine avec:
Code:
$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 ?
 
WRInaute impliqué
Voila une fonction qui permet de supprimer ts les caractères spéciaux(et remplace le vide par des tirets):

Code:
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));
}
 
WRInaute occasionnel
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
Code:
			print strtr("Méchant", "ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ", "AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy");

Ca me retourne
Code:
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... :cry:

Il y a autre chose à paramétrer ?
 
WRInaute occasionnel
Bon j'ai contourné le prob par de la bricole de chez bricole... ça me plaît pas trop, mais ça fonctionne...

Code:
			$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;
 
Discussions similaires
Haut