30 mar
Remplacer proprement les caractères spéciaux en PHP
Quand on s’amuse avec de la réécriture d’URL pour le référencement on est très souvent confrontés à des problèmes liés aux caractères spéciaux, aux espaces ou autres caractères qu’on ne peut pas se permettre de faire passer dans une URL. Une fonction pour remplacer proprement les caractères spéciaux, espaces et autres peut même faire gagner pas mal de temps.
Il y a de ça 4 ans, j’avais codé une fonction pour réécrire les chaines proprement. Passé tout ce temps, je m’aperçois que je m’en sers toujours très souvent. En fait, je me prend pas la tête, j’inclue la fonction et je l’applique sur la chaine qui m’intéresse.
<?php
function no_special_character_v2($chaine){
// les accents
$chaine=trim($chaine);
$chaine= strtr($chaine,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ","aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn");
// les caracètres spéciaux (aures que lettres et chiffres en fait)
$chaine = preg_replace('/([^.a-z0-9]+)/i', '-', $chaine);
$chaine = strtolower($chaine);
return $chaine;
}
?>
Et pour l’appliquer, rien de bien sorcier, il suffit de faire ça :
<?php
echo no_special_character_v2('Ma chaine Bizarroïde : ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ');
?>
Ce qui donnera ça :
ma-chaine-bizarroide-aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn.
Simple mais efficace.


Respond to this post