Magazine Internet

Convertir les caractère accentués en caractères non accentués en PHP

Publié le 17 mars 2010 par Nicko_73

Pour le formatage des URL, il faut penser à transformer les caractères accentués en non accentués. La fonction suivante va donc vous permettre de supprimer les accents d’une chaine de caractère.

function stripAccents($str, $encoding = 'utf-8') {
    mb_regex_encoding($encoding); // jeu de caractères courant pour les expressions rationnelles.
 
    // Tableau des corespondance
    $str_ascii = array(
        'A'        => 'ÀÁÂÃÄÅĀĂǍẠẢẤẦẨẪẬẮẰẲẴẶǺĄ',
        'a'        => 'àáâãäåāăǎạảấầẩẫậắằẳẵặǻą',
        'C'        => 'ÇĆĈĊČ',
        'c'        => 'çćĉċč',
        'D'        => 'ÐĎĐ',
        'd'        => 'ďđ',
        'E'        => 'ÈÉÊËĒĔĖĘĚẸẺẼẾỀỂỄỆ',
        'e'        => 'èéêëēĕėęěẹẻẽếềểễệ',
        'G'        => 'ĜĞĠĢ',
        'g'        => 'ĝğġģ',
        'H'        => 'ĤĦ',
        'h'        => 'ĥħ',
        'I'        => 'ÌÍÎÏĨĪĬĮİǏỈỊ',
        'J'        => 'Ĵ',
        'j'        => 'ĵ',
        'K'        => 'Ķ',
        'k'        => 'ķ',
        'L'        => 'ĹĻĽĿŁ',
        'l'        => 'ĺļľŀł',
        'N'        => 'ÑŃŅŇ',
        'n'        => 'ñńņňʼn',
        'O'        => 'ÒÓÔÕÖØŌŎŐƠǑǾỌỎỐỒỔỖỘỚỜỞỠỢ',
        'o'        => 'òóôõöøōŏőơǒǿọỏốồổỗộớờởỡợð',
        'R'        => 'ŔŖŘ',
        'r'        => 'ŕŗř',
        'S'        => 'ŚŜŞŠ',
        's'        => 'śŝşš',
        'T'        => 'ŢŤŦ',
        't'        => 'ţťŧ',
        'U'        => 'ÙÚÛÜŨŪŬŮŰŲƯǓǕǗǙǛỤỦỨỪỬỮỰ',
        'u'        => 'ùúûüũūŭůűųưǔǖǘǚǜụủứừửữự',
        'W'        => 'ŴẀẂẄ',
        'w'        => 'ŵẁẃẅ',
        'Y'        => 'ÝŶŸỲỸỶỴ',
        'y'        => 'ýÿŷỹỵỷỳ',
        'Z'        => 'ŹŻŽ',
        'z'        => 'źżž',
        // Ligatures
        'AE'        => 'Æ',
        'ae'        => 'æ',
        'OE'        => 'Œ',
        'oe'        => 'œ'
        );
 
    // Convertion
    foreach ($str_ascii as $k => $v) {
        $str = mb_ereg_replace('['$v']', $k, $str);
    }
 
    return $str;
 }

Cette fonction prend en compte les majuscules ainsi que les minuscules, pour la bonne raison, c’est qu’il est possible que l’on en ait besoin à d’autres endroits dans un programme. Ainsi, on factorise notre code (on fragmente le code).

On aurait pu utiliser des fonctions plus simples, comme str_replace, mais il faut aussi prendre en compte que si l’on souhaite faire la conversion des caractère en Javascript, il se peut que celle-ci ne fonctionne pas et nous donne des caractères « vraiment spéciaux » en fin de compte.


Retour à La Une de Logo Paperblog

A propos de l’auteur


Nicko_73 4 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte