Problème avec preg_replace

Résolu
T-SonS Messages postés 307 Statut Membre -  
T-SonS Messages postés 307 Statut Membre -
Bonjour,

dans le but de remplacer tous les accents et caractères spéciaux d'une chaine, j'utilise la fonction preg_replace qui me pose quelques soucis.

Au lieu de m'afficher simplement "etudia" lorsque je rentre "étudià" par exemple, la fonction m'écrit "eetudiea".

Quelqu'un saurait-il d'ou peut venir ce problème?

merci d'avance.

function rewrite($label)
{
	$search = array ('@[èéê???oe]@i','@[àáâã?ä]@i','@[ìíî??ï]@i','@[éèêë??]@i','@[òöôó?ø]@i',
	'@[ç]@i','@[^a-zA-Z0-9]@');
	$replace = array ('e','a','i','u','o','c','-');
	$label =  preg_replace($search, $replace, $label);
	return $label;
}
echo rewrite("étudià");
//renvoie eetudiea


--
Negatif ou Positif, tant que c'est Constructif.

1 réponse

  1. Pitet Messages postés 2845 Statut Membre 530
     
    Salut,

    Il faut utiliser le modificateur u pour traiter les chaines en UTF-8 :
    function rewrite($label)
    {
    	$search = array ('@[èéê???oe]@iu','@[àáâã?ä]@iu','@[ìíî??ï]@iu','@[éèêë??]@iu','@[òöôó?ø]@iu',
    	'@[ç]@iu','@[^a-zA-Z0-9]@u');
    	$replace = array ('e','a','i','u','o','c','-');
    	$label =  preg_replace($search, $replace, $label);
    	return $label;
    }
    echo rewrite("étudià");
    //renvoie etudia
    


    Bonne journée
    1
    1. T-SonS Messages postés 307 Statut Membre 50
       
      Parfait, merci beaucoup!
      0