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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Remplacer les caractères spéciaux d'une chaine

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

par AB » 11 sept. 2011, 20:01

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

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

par Cedric1 » 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;
}