Eléphant du PHP |
121 Messages
07 nov. 2007, 20:08
Après des heures à rechercher une fonction simple qui me permettrait de supprimer les accentuations il a fallut que je me rende à l'évidence : on est jamais mieux servit que pas soit même

La plupart des exemples que j'ai trouvé sont basés sur la substitution de caractères accentués par des caractères non accentués. Cela pourrait être simple, mais avec les divers formats d'encodage de caractères c'est vraiment trop la misère pour avoir quelque chose qui marche. Voici donc ma solution.
J'utilise la fonction htmlentities() pour transformer les caractères spéciaux en valeurs échappées e.g. "é". J'utilise ensuite preg_replace() pour récupérer le caractère non accentué (la première lettre de la séquence d'échappement). Bref, c'est tout simple et ça marche au poil :
$title = strtolower(htmlentities($title, ENT_QUOTES, 'utf-8'));
$title = preg_replace('#\&([aeiouc])[a-z]+\;#', '\1', $title);
$title = preg_replace('#\&[a-z]+\;#', '', $title);
Enjoy !