Retirer les caractères spéciaux d'une chaîne de caractères

Voici une petite fonction PHP très pratique, notamment pour la réécriture d'URL, ou pour l'upload de fichiers sur le serveur, ... qui permet d'éliminer tout les caractères spéciaux d'une chaîne.

 1 //+ Maigret Aurélien
 2 //@ https://www.dewep.net
 3 function cleanCaracteresSpeciaux ($chaine)
 4 {
 5     setlocale(LC_ALL, 'fr_FR');
 6 
 7     $chaine = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $chaine);
 8 
 9     $chaine = preg_replace('#[^0-9a-z]+#i', '-', $chaine);
10 
11     while(strpos($chaine, '--') !== false)
12     {
13         $chaine = str_replace('--', '-', $chaine);
14     }
15 
16     $chaine = trim($chaine, '-');
17 
18     return $chaine;
19 }

La fonction remplace les principaux accents par leurs lettres respectives, afin de garder des mots cohérents.

Tout autre caractère est modifié en tiret de liaison. Vous pouvez très bien, en fonction de vos besoins, modifier la fonction afin que ces caractères deviennent des espaces par exemple.

Merci à PasFacile pour les améliorations.


PHP

Article publié le 13 Septembre 2012.

Commentaires