PHP – Fonction – Nettoyer une chaîne de caractères pour garantir une URL
Posted By Franck Pertegas on 5 Avr 2011 in PHP, Programmation |
En farfouillant dans certains fichiers de codes que j’ai par milliers dans mon PC et disques durs, je retrouve parfois de petites fonctions PHP prêtent à l’emploi et autant en faire profiter, car ça peut toujours servir à mes lecteurs. Cette fois je vous propose une petite fonction qui vous permettra de nettoyer une chaîne de caractères afin de l’intégrer à une URL par exemple. Il y a plusieurs autres utilités à cela, comme par exemple, rendre les noms de fichiers ou d’images plus propres pour le web, mais qui restent lisibles pour l’homme.

Fonction clear_str() :
/**
* Transforme une chaîne de caractères en alphanumérique, idéal pour y intégrer à une URL
*
* @param string $text
* @param string $charset (default utf-8) or iso-8859-1
* @param string $separator ('-')
* @return string
*/
function clear_str($text, $separator = '-', $charset = 'utf-8') {
// Pour l'encodage
$text = mb_convert_encoding($text,'HTML-ENTITIES',$charset);
$text = strtolower(trim($text));
// On vire les accents
$text = preg_replace( array('/ß/','/&(..)lig;/', '/&([aouAOU])uml;/','/&(.)[^;]*;/'),
array('ss',"$1","$1".'e',"$1"),
$text);
// on vire tout ce qui n'est pas alphanumérique
$text_clear = eregi_replace("[^a-z0-9_-]",' ',trim($text));// ^a-zA-Z0-9_-
// Nettoyage pour un espace maxi entre les mots
$array = explode(' ', $text_clear);
$str = '';
$i = 0;
foreach($array as $cle=>$valeur){
if(trim($valeur) != '' AND trim($valeur) != $separator AND $i > 0)
$str .= $separator.$valeur;
elseif(trim($valeur) != '' AND trim($valeur) != $separator AND $i == 0)
$str .= $valeur;
$i++;
}
//on renvoie la chaîne transformée
return $str;
}
$titre = 'L\'exercice de chaîne à nettoyer';
$url = 'http://www.monsite.com/'.clear_str($titre);
echo $url; // donnera http://www.monsite.com/l-exercice-de-chaine-a-nettoyer
Utilisation :
clear_str('ma chaine de caractère à nettoyer', 'mon séparateur', 'encodage que j\'utilise');
Si vous avez des commentaires ou suggestions, faites le moi savoir 🙂
Bon code à tous !
Articles pouvant vous intéresser :
9 février 2018
Bravo, tres interessant ! 🙂