Bonjour !
J'ai une fonction de "nettoyage" qui me cause un petit souci :
function nettoyer($in) {
$search = array ('@[áãàâäÂÄ]@i','@[éèêëÊË]@i','@[ìíiiîïÎÏ]@i','@[úûùüÛÜ]@i','@[òóõôöÔÖ]@i','@[ñÑ]@i','@[ýÿÝ]@i','@[ç]@i','@[ ]@i','@[^a-zA-Z0-9_.]@');
$replace = array ('a','e','i','u','o','n','y','c','_','');
return preg_replace($search, $replace, $in);
}
Et si je fais ceci :
<?=nettoyer('àé')?>
Le problème est que, au lieu d'avoir "ae", j'ai "aaae".
?!
J'ai fais un petit test : j'ai changé l'ordre dans mes deux arrays de cette manière :
function nettoyer($in) {
$search = array ('@[éèêëÊË]@i','@[áãàâäÂÄ]@i','@[ìíiiîïÎÏ]@i','@[úûùüÛÜ]@i','@[òóõôöÔÖ]@i','@[ñÑ]@i','@[ýÿÝ]@i','@[ç]@i','@[ ]@i','@[^a-zA-Z0-9_.]@');
$replace = array ('e','a','i','u','o','n','y','c','_','');
return preg_replace($search, $replace, $in);
}
(le groupe des E est avant celui des A)
Et cette fois si, quand je fais
<?=nettoyer('àé')?>
J'obtiens "eaee" au lieu de "ae".
Il semblerait donc que la lettre du premier "groupe" de l'array se mete avant chacun des caractères nettoyés. Auriez vous une solution à ce petit problème ?
Merci beaucoup,
Pitouli

