-
[PHP] Enlever tous les accents d'une chaîne
par Skreo, le 25 Juillet 2008 à 20:46Voici ma fonction pour enlever tous les accents d'une chaîne de caractères tout en respectant l'encodage (cette fonction traite très bien les textes UTF-8 par exemple) :
function removeAccents($txt){
$txt = str_replace('œ', 'oe', $txt);
$txt = str_replace('Œ', 'Oe', $txt);
$txt = str_replace('æ', 'ae', $txt);
$txt = str_replace('Æ', 'Ae', $txt);
mb_regex_encoding('UTF-8');
$txt = mb_ereg_replace('[ÀÁÂÃÄÅĀĂǍẠẢẤẦẨẪẬẮẰẲẴẶǺĄ]', 'A', $txt);
$txt = mb_ereg_replace('[àáâãäåāăǎạảấầẩẫậắằẳẵặǻą]', 'a', $txt);
$txt = mb_ereg_replace('[ÇĆĈĊČ]', 'C', $txt);
$txt = mb_ereg_replace('[çćĉċč]', 'c', $txt);
$txt = mb_ereg_replace('[ÐĎĐ]', 'D', $txt);
$txt = mb_ereg_replace('[ďđ]', 'd', $txt);
$txt = mb_ereg_replace('[ÈÉÊËĒĔĖĘĚẸẺẼẾỀỂỄỆ]', 'E', $txt);
$txt = mb_ereg_replace('[èéêëēĕėęěẹẻẽếềểễệ]', 'e', $txt);
$txt = mb_ereg_replace('[ĜĞĠĢ]', 'G', $txt);
$txt = mb_ereg_replace('[ĝğġģ]', 'g', $txt);
$txt = mb_ereg_replace('[ĤĦ]', 'H', $txt);
$txt = mb_ereg_replace('[ĥħ]', 'h', $txt);
$txt = mb_ereg_replace('[ÌÍÎÏĨĪĬĮİǏỈỊ]', 'I', $txt);
$txt = mb_ereg_replace('[ìíîïĩīĭįıǐỉị]', 'i', $txt);
$txt = str_replace('Ĵ', 'J', $txt);
$txt = str_replace('ĵ', 'j', $txt);
$txt = str_replace('Ķ', 'K', $txt);
$txt = str_replace('ķ', 'k', $txt);
$txt = mb_ereg_replace('[ĹĻĽĿŁ]', 'L', $txt);
$txt = mb_ereg_replace('[ĺļľŀł]', 'l', $txt);
$txt = mb_ereg_replace('[ÑŃŅŇ]', 'N', $txt);
$txt = mb_ereg_replace('[ñńņňʼn]', 'n', $txt);
$txt = mb_ereg_replace('[ÒÓÔÕÖØŌŎŐƠǑǾỌỎỐỒỔỖỘỚỜỞỠỢ]', 'O', $txt);
$txt = mb_ereg_replace('[òóôõöøōŏőơǒǿọỏốồổỗộớờởỡợð]', 'o', $txt);
$txt = mb_ereg_replace('[ŔŖŘ]', 'R', $txt);
$txt = mb_ereg_replace('[ŕŗř]', 'r', $txt);
$txt = mb_ereg_replace('[ŚŜŞŠ]', 'S', $txt);
$txt = mb_ereg_replace('[śŝşš]', 's', $txt);
$txt = mb_ereg_replace('[ŢŤŦ]', 'T', $txt);
$txt = mb_ereg_replace('[ţťŧ]', 't', $txt);
$txt = mb_ereg_replace('[ÙÚÛÜŨŪŬŮŰŲƯǓǕǗǙǛỤỦỨỪỬỮỰ]', 'U', $txt);
$txt = mb_ereg_replace('[ùúûüũūŭůűųưǔǖǘǚǜụủứừửữự]', 'u', $txt);
$txt = mb_ereg_replace('[ŴẀẂẄ]', 'W', $txt);
$txt = mb_ereg_replace('[ŵẁẃẅ]', 'w', $txt);
$txt = mb_ereg_replace('[ÝŶŸỲỸỶỴ]', 'Y', $txt);
$txt = mb_ereg_replace('[ýÿŷỹỵỷỳ]', 'y', $txt);
$txt = mb_ereg_replace('[ŹŻŽ]', 'Z', $txt);
$txt = mb_ereg_replace('[źżž]', 'z', $txt);
return $txt;
}On peut faire plus simple, certes, mais contrairement à ce qu'on peut voir habituellement, cette fonction traite véritablement tous les accents existants, et fonctionne avec tous les encodages.
Partager cet article :

Tags : php, accents
Suivre le flux RSS des commentaires de cet article
Revenir à la liste des articles
-
Commentaires
1Darklg
26 Juillet 2008 à 10:27Elle est pas mal, en effet =)2antouane6 Novembre 2008 à 20:07Que pense tu de :
<code> function enleve_accents($chaine) {
$reg = '/&(.)(acute|grave|circ|uml|cedil|ring|tilde|slash);/';
return preg_replace($reg, '\1', htmlentities($chaine));
}
Source: http://www.webmaster-hub.com/publication/Transformer-un-texte-en-url.html
</code>
Ajouter un commentaire
Haut de page