Pour mettre un texte en majuscule ou pour toute autre raison, il est parfois nécessaire de passer par une fonction pour supprimer les accents.

Voici une fonction assez simple pour exécuter cette tâche:

function stripAccents($string){
return strtr($string,'àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ', 'aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUY');
}

La fonction précédente ne marchera pas correctement pour les chaînes de caractères encodées en UTF8.

Petit rappel sur la différence du nombre de bits entre la norme ISO et la norme UTF-8 par ici.

Pour un encodage UTF-8 on utilisera cette fonction :

function stripAccentsUtf8($string)
{
$string = mb_strtolower($string, 'UTF-8');
$string = str_replace(
array(
'à', 'â', 'ä', 'á', 'ã', 'å',
'î', 'ï', 'ì', 'í',
'ô', 'ö', 'ò', 'ó', 'õ', 'ø',
'ù', 'û', 'ü', 'ú',
'é', 'è', 'ê', 'ë',
'ç', 'ÿ', 'ñ',
),
array(
'a', 'a', 'a', 'a', 'a', 'a',
'i', 'i', 'i', 'i',
'o', 'o', 'o', 'o', 'o', 'o',
'u', 'u', 'u', 'u',
'e', 'e', 'e', 'e',
'c', 'y', 'n',
),
$string
);

return $string;
}

Si vous rencontrez des problèmes avec certaines fonctions (on peut citer strlen() qui retourne une longueur supérieure au nombre total de caractères), c’est que l’UTF-8 n’est pas supporter. Il existe bien souvent une fonction PHP équivalente avec le prefix mb_ dans la signature qui marchera.

Mots-clefs :, , ,

Commentaires


deux + = 10