août 10
Voici une petite fonction qui permet de formater et nettoyer une chaîne pour l’URL Rewriting en PHP.
Exemple:
Avant nettoyage: C’ était en réalité un fake !
Après nettoyage : c-etait-en-realite-un-fake
Si il n’y a pas de preg_replace() mais plutôt des strtr() et des str_replace() c’est simplement pour des raisons de rapidité, en effet cette fonction est la plus-part du temps appelée de très nombreuses fois dans une pages, il est donc préférable qu’elle soit optimisée!
Cette fonction gère aussi les chaîne encodées en UTF8.
1 2 3 4 5 6 7 8 9 | function formater_url($url){ $url = utf8_decode($url); $url = strtolower(strtr($url, utf8_decode('ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ()[]\'"~$&%*@ç!?;,:/\^¨€{}<>|+.- '), 'aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn -- c --- e --')); $url = str_replace(' ', '', $url); $url = str_replace('---', '-', $url); $url = str_replace('--', '-', $url); $url = trim($url,'-'); return $url; } |
Mots-clefs :formater, nettoyer, url rewriting, utf8

août 20th, 2009 at 12 h 49 min
Salut,
J’ai utilisé également une fonction basée sur « str_replace », mais maintenant, j’utilise plutôt celle-ci, qui permet d’éviter quelques erreurs :
function urlChars( $url, $type = '' ) {
$url = preg_replace("`\[.*\]`U","",$url);
$url = preg_replace('`&(amp;)?#?[a-z0-9]+;`i','-',$url);
$url = htmlentities($url, ENT_NOQUOTES, 'utf-8');
$url = preg_replace( "`&([a-z])(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig);`i","\\1", $url );
$url = preg_replace( array("`[^a-z0-9]`i","`[-]+`") , "-", $url);
$url = ( $url == "" ) ? $type : strtolower(trim($url, '-'));
return $url;
}
Je vous laisse juger
T.
août 24th, 2009 at 1 h 53 min
Salut Thierry,
Merci pour cette contribution!
je viens de tester cette fonction et elle donne aussi un très bon résultat, j’étais moi aussi parti sur une fonction avec des preg_replace(), mais comme j’utilise cette fonction quelques centaines de fois sur certaines pages, j’ai décidé de l’optimiser et j’ai constaté que les str_replace() et strtr() étaient plus rapide .
Exemple sur 1000 itérations:
Fonction avec str_replace() : 0.018678903579712
Fonction avec preg_replace() : 0.053956031799316
j’ai donc préféré la rapidité, même si j’ aurais préféré ta fonction si je ne devais traiter les URL qu’une seule fois.