Manipulation des chaînes UTF-8
Bonjour,
j'ai appris que l'UTF-8 était codé sur 2 octets contrairement à l'ISO. Et apparemment, (du moins, c'est mon cas) cela pose pas mal de problèmes avec PHP.
En effet, il y a quelques temps, je me suis tiré les cheveux sur le script suivant cencé nettoyer une chaîne de caractères :
Code:
1 2 3 4 5
| function clean($filename) {
$search = 'çñÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåèéêëìíîïðòóôõöùúûüµýÿ';
$replace = 'cnAAAAAACEEEEIIIIOOOOOUUUUYaaaaaaeeeeiiiioooooouuuuuyy';
return strtr($filename, $search, $replace);
} |
et bien ce script ne fonctionne pas lorsque la page est au format UTF-8. Je me suis rendu compte que le nombre de caractères dans $search n'était pas le même que pour $replace ! 8O Visuellement, les deux ont 54 caractères mais strlen($search) retourne 108... ce qui crée un décalage pour la fonction strtr(). :evilred:
Alors ma première question est :
¤ est-il possible de détecter (via une fonction ou script) si une chaîne est au format UTF-8 ?
ma seconde question :
¤ connaissez vous un script permettant la même chose que clean() (ci-dessus) tout en gérant l'UTF-8 ?
Merci d'avance !