Problème avec preg_replace

Résolu/Fermé
T-SonS Messages postés 232 Date d'inscription dimanche 6 décembre 2009 Statut Membre Dernière intervention 24 mars 2016 - 22 mai 2014 à 13:53
T-SonS Messages postés 232 Date d'inscription dimanche 6 décembre 2009 Statut Membre Dernière intervention 24 mars 2016 - 22 mai 2014 à 21:04
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

1 réponse

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 543
22 mai 2014 à 16:18
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
T-SonS Messages postés 232 Date d'inscription dimanche 6 décembre 2009 Statut Membre Dernière intervention 24 mars 2016 50
22 mai 2014 à 21:04
Parfait, merci beaucoup!
0