Remplacer les caractères spéciaux d'une chaine

Cedric1
Invité n'ayant pas de compte PHPfrance

11 sept. 2011, 19:56

Bonjour à tous,

Je cherche à retirer tous les caractères spéciaux d'une chaine de caractère pour pouvoir utiliser celle-ci dans une url (url rewriting).

Donc par exemple je voudrais que ma phrase : "roulée à même le sol !" devienne "roulee-a-meme-le-sol".

J'ai donc ma fonction ci-dessous qui à pour but de m'aider à obtenir ce résultat mais j'ai un problème ! Le résultat obtenu est "rouln-e-no-mn-me-le-sol"

Je ne comprends vraiment pas d'où cela peut venir et c'est pourquoi j'en appel à vous.

Merci beaucoup !

Voici ma fonction :
function filtre_titre($chaine) {
	$chaine = trim($chaine);
	$chaine = strtr($chaine,
"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ",
"aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn");
	$chaine = strtr($chaine,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz");
	$chaine = preg_replace('#([^.a-z0-9]+)#i', '-', $chaine);
        $chaine = preg_replace('#-{2,}#','-',$chaine);
        $chaine = preg_replace('#-$#','',$chaine);
        $chaine = preg_replace('#^-#','',$chaine);
	return $chaine;
}

ViPHP
AB
ViPHP | 5818 Messages

11 sept. 2011, 20:01

strtr n'est pas compatible utf-8. Utilises str_replace à la place.