Nettoyer une chaîne de caractères en PHP

Publié le 28 août 2008 par Dator

On a toujours besoin à un moment ou un autre dans notre vie de développeur, de nettoyer une chaîne de caractères afin d’enlever les caractères spéciaux, les espaces, tout mettre en minuscule … Rien que pour les urls c’est plus propre !

Voici un petit script réalisé qui vous permet de faire cela :

function rewrite($label)
{
	/* Expression régulière permettant le changement des caractères accentués en
	* caractères non accentués.
	*/
	$search = array ('@[éèêëÊË]@i','@[àâäÂÄ]@i','@[îïÎÏ]@i','@[ûùüÛÜ]@i','@[ôöÔÖ]@i',
	'@[ç]@i','@[^a-zA-Z0-9]@');
	$replace = array ('e','a','i','u','o','c',' ');
	$label =  preg_replace($search, $replace, $label);
	$label = strtolower($label); // mais toutes les lettres de la chaîne en minuscule
	$label = str_replace(" ",'-',$label); // remplace les espaces en tirets
	$label = preg_replace('#\-+#','-',$label); // enlève les autres caractères inutiles
	$label = preg_replace('#([-]+)#','-',$label);
	trim($label,'-'); // remplace les espaces restants par des tirets

	return $label
}

Article original écrit par Clément JOBEILI et publié sur Dator Blog | © Dator.fr - 2008