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.