Publié dans PHP, 6 commentaires
Voici une fonction pour enlever tous les caractères spéciaux et accents d’une chaîne de caractères en respectant l’encodage. (fonctionne pour l’UTF8). Les caractères sont remplacés par leur plus proche correspondance ASCII (sans accent)
/** * Remplace les caractères spéciaux par leur plus proche * correspondance ASCII (sans accent) * * @info http://www.mibhouse.org/pokemon_jojo * * @param string $str * @param string $encoding * * @return string $str */ function strtoascii($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; }
J’ai essayé de regrouper tous les caractères spéciaux que je connaissais. Si il en manque, n’hésitez pas à me le signaler.
© Copyright 2010 Pokemon_JOJO