Fonction de normalisation de chaine en PHP
3 08 2011Voici une petite fonction bien utile que j’utilise pour normaliser une chaine de caractères en PHP (supprimer les accents, les espaces et tabulations en double…) :
function str_normalize($string){ # Normalise la chaine $accents = 'àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ'; $noaccents = 'aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUY'; $string = strtr($string, $accents, $noaccents); # Remplacement accents $string = strtolower($string); # Minuscules $string = preg_replace('#[^a-z0-9 ]#i', ' ', $string); # Suppression de tout ce qui n'est pas une lettre, un chiffre ou un espace $string = preg_replace('#\s+#', '_', $string); # Normalisation blancs (espaces, tabulations) $string = trim($string); return $string; }
Si vous êtes en UTF-8 (ce qui est le cas de wordpress par exemple), il faut y apporter 2 petites modifications (la fonction mb_strtolower n’éxiste pas en PHP4) :
$string = strtr($string, utf8_decode($accents), $noaccents); # Remplacement accents $string = mb_strtolower($string); # Minuscules
Enjoy