Bonjour,

J'utilise habituellement la même petites fonction à base de regex depuis des années pour nettoyer mes chaines de caractères de leurs espaces et accents :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
$in= preg_replace("#\[.*\]#iU", "", $in);
$search = array ('@[éèêëÊË]@i','@[àâäÂÄ]@i','@[îïÎÏ]@i','@[ûùüÛÜ]@i','@[ôöÔÖ]@i','@[ç]@i','@[ ]@i','@[^a-zA-Z0-9_]@');
$replace = array ('e','a','i','u','o','c','','');
$login = preg_replace($search, $replace, $in);
Seulement voilà, je démarre pour le coup un projet en UTF-8, et visiblement, comme pour beaucoup d'autres fonction de PHP, ça pose un problème !

Donc si je lui donne à manger la chaine "&éç èzezêéxà", en charset iso-8859-1, pas de problème, il me retourne :

ecezezeexa
par contre, une fois que je passe en charset UTF-8, la même chose me donne :

eeeceezezeeeexea
Dans la plupart des fonctions de gestion de texte PHP, on à la possibilité de spécifier le charset, mais ça ne semble pas être le cas pour les preg...

Quelqu'un aurait-il la bonté de me dire comment doivent être gérer les preg lorsque l'on est en UTF-8 ?

En vous remerciant par avance !