Fonction de normalisation de chaine en PHP

3 08 2011

Voici 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 ;)


Partager :

Ces icônes sont des liens vers des sites de partage de signet sociaux où les lecteurs peuvent partager et découvrir de nouveaux liens.
  • Digg
  • del.icio.us
  • Facebook
  • Digg -fr
  • Live
  • MisterWong Fr
  • Scoopeo
  • StumbleUpon
  • Technorati
  • Wikio FR

Actions

Informations

Et maintenant je fais quoi ?

Laisser un commentaire

Vous pouvez utiliser ces balises html : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>