Remplacer proprement les caractères spéciaux en PHP

Quand on s’amuse avec de la réécriture d’URL pour le référencement on est très souvent confrontés à des problèmes liés aux caractères spéciaux, aux espaces ou autres caractères qu’on ne peut pas se permettre de faire passer dans une URL. Une fonction pour remplacer proprement les caractères spéciaux, espaces et autres peut même faire gagner pas mal de temps.

Il y a de ça 4 ans, j’avais codé une fonction pour réécrire les chaines proprement. Passé tout ce temps, je m’aperçois que je m’en sers toujours très souvent. En fait, je me prend pas la tête, j’inclue la fonction et je l’applique sur la chaine qui m’intéresse.

<?php
function no_special_character_v2($chaine){

	//	les accents
	$chaine=trim($chaine);
	$chaine= strtr($chaine,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ","aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn");

	//	les caracètres spéciaux (aures que lettres et chiffres en fait)
	$chaine = preg_replace('/([^.a-z0-9]+)/i', '-', $chaine);
	$chaine = strtolower($chaine);

	return $chaine;

}
?>

Et pour l’appliquer, rien de bien sorcier, il suffit de faire ça :

<?php
echo no_special_character_v2('Ma chaine Bizarroïde : ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ');
?>

Ce qui donnera ça :
ma-chaine-bizarroide-aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn.

Simple mais efficace. ;)

Cet article vous a plu ? Partagez le !
  • Twitter
  • Facebook
  • Google Bookmarks
  • Wikio
  • Digg
  • Sphinn
  • del.icio.us
  • Mixx
  • LinkedIn
  • Live
  • MySpace
  • Scoopeo
  • Wikio IT
  • Yahoo! Buzz

4 commentaires sur ce billet.

  1. Salut denis,
    sympa le site, quand je lis les divers billets, j’ai l’impression
    de les avoir écrits tant les problèmes que tu abordes (avec les serveurs),
    sont des problèmes bien connus pour moi !
    Et ce code …. il me dit quelques chose …
    en tout cas je suis content de voir que maintenant tu as du temps pour parfaire ta tachnique, qui, aux vues des bouts de code que tu craches me paraît de plus en plus propre !

    Bonne continuation.

  2. Salut Quentin :)

    Merci pour le commentaire, ça fait plaisir de te lire depuis le temps (vu qu’on est tous les deux blindés de travail, c’est pas toujours simple).
    Ouep, les serveurs, je suis en plein dedans depuis quelques temps et donc, j’ai tous les problèmes qui vont avec. ^^

    J’ai pas vraiment le temps de parfaire ma technique mais vu que je suis en prod quasiment tout le temps c’est clair que je fais en sorte de coder de plus en plus propre (après, on fait comme on peut ^^). J’ai toute une floppée de projets en cours, dingue, on croirait pas comme ça vu de loin, mais c’est dingue tout le backoffice qu’il faut mettre en place pour une franchise nationnale en crédit immobilier, donc forcément ça aide.

    Merci pour les compliments ;)

  3. ça fait plaisir de lire des choses pareil, je suis content de voir que ça a fini par payer !
    je n’ai pas eu l’occas de lire ton code depuis un moment, mais les petits bouts que j’en ai vu
    me paraissent bien sympas (en fait j’aurais pu l’écrire … et j’ai comme l’impression que l’élève va bientôt dépasser le maître, enfin maître …. si je peux me permettre …)

    tu vois de notre côté on a pas mal avancé, on est de plus en plus spécialisé dans le logiciel métier, CRM / ERP etc … on est en train de doucement migrer vers l’AS3, en tout cas pour les nouveaux proj, un nouveau site en perspective etc .etc … enfin on blablatera si tu passes !

    ++

  4. et au fait, ce ne sont pas des compliments, mais des remarques ! positives soit, mais des remarques !

Respond to this post