Olivier Miakinen
2007-01-09 10:57:40 UTC
Bonjour,
Je lance un nouveau fil pour que cet article ne soit pas noyé dans une
longue enfilade, mais ceci est essentiellement une réponse à Paul Sellis
qui cherchait à remplacer des caractères accentués en UTF-8 par leurs
équivalents non accentués.
J'étais en train de chercher une solution consistant à transformer sa
chaîne en Latin1 au risque de perdre des caractères, avant de faire un
preg_replace ou (mieux) strtr, et j'ai relu la doc de la fonction iconv
lorsque j'ai vu... le paramètre TRANSLIT qui est censé tout faire tout
seul comme un grand !
Donc, à partir d'UTF-8 :
$chaine_ascii = iconv("UTF-8", "ASCII//TRANSLIT", $chaine_utf8);
À partir d'ISO-8859-1 :
$chaine_ascii = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $chaine_latin1);
Ai-je besoin de détailler pour d'autres charsets ?
--> À essayer de toute urgence, mais une rapide recherche via Google
--> indique que je ne suis pas le premier à y avoir pensé, loin de là.
Je lance un nouveau fil pour que cet article ne soit pas noyé dans une
longue enfilade, mais ceci est essentiellement une réponse à Paul Sellis
qui cherchait à remplacer des caractères accentués en UTF-8 par leurs
équivalents non accentués.
J'étais en train de chercher une solution consistant à transformer sa
chaîne en Latin1 au risque de perdre des caractères, avant de faire un
preg_replace ou (mieux) strtr, et j'ai relu la doc de la fonction iconv
lorsque j'ai vu... le paramètre TRANSLIT qui est censé tout faire tout
seul comme un grand !
Donc, à partir d'UTF-8 :
$chaine_ascii = iconv("UTF-8", "ASCII//TRANSLIT", $chaine_utf8);
À partir d'ISO-8859-1 :
$chaine_ascii = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $chaine_latin1);
Ai-je besoin de détailler pour d'autres charsets ?
--> À essayer de toute urgence, mais une rapide recherche via Google
--> indique que je ne suis pas le premier à y avoir pensé, loin de là.
--
Olivier Miakinen
Olivier Miakinen