réécriture d'url preg_replace() ou str_replace() ?
Posté : 29 sept. 2009, 15:12
J'ai une fonction pour passer des chaines de caractères dans les url,
en gros elle met tout en minuscule, supprime les accents, ensuite elle transforme en underscore, les caractères non alpha numeriques.
J'ai mis en commentaire l'ancienne methode utilisant str_replace() pour une nouvelle méthode avec expressions regulières et preg_replace()
Ma question est :
à priori, laquelle des deux méthodes est la plus rapide et la plus performantes?
faut-il utiliser pluto str_replace() ou preg_replace()dans ce cas ?
en gros elle met tout en minuscule, supprime les accents, ensuite elle transforme en underscore, les caractères non alpha numeriques.
J'ai mis en commentaire l'ancienne methode utilisant str_replace() pour une nouvelle méthode avec expressions regulières et preg_replace()
Ma question est :
à priori, laquelle des deux méthodes est la plus rapide et la plus performantes?
faut-il utiliser pluto str_replace() ou preg_replace()dans ce cas ?
function reecriture_pour_url($chaine)
{
if($chaine=="")return "";
/*$chaine_modif=$chaine;
$chaine_modif=strtolower($chaine_modif);
$chaine_modif=trim($chaine_modif);
$chaine_modif=str_replace("-","_",$chaine_modif);
$chaine_modif=str_replace(" ","_",$chaine_modif);
$chaine_modif=str_replace("à","a",$chaine_modif);
$chaine_modif=str_replace("â","a",$chaine_modif);
$chaine_modif=str_replace("ã","a",$chaine_modif);
$chaine_modif=str_replace("á","a",$chaine_modif);
$chaine_modif=str_replace("ã","a",$chaine_modif);
$chaine_modif=str_replace("ä","a",$chaine_modif);
$chaine_modif=str_replace("å","a",$chaine_modif);
$chaine_modif=str_replace("æ","a",$chaine_modif);
$chaine_modif=str_replace("ç","c",$chaine_modif);
$chaine_modif=str_replace("&","_et_",$chaine_modif);
$chaine_modif=str_replace("&","_et_",$chaine_modif);
$chaine_modif=str_replace("é","e",$chaine_modif);
$chaine_modif=str_replace("é","e",$chaine_modif);
$chaine_modif=str_replace("©a","e",$chaine_modif);
$chaine_modif=str_replace("è","e",$chaine_modif);
$chaine_modif=str_replace("ê","e",$chaine_modif);
$chaine_modif=str_replace("ë","e",$chaine_modif);
$chaine_modif=str_replace("î","i",$chaine_modif);
$chaine_modif=str_replace("ï","i",$chaine_modif);
$chaine_modif=str_replace("ì","i",$chaine_modif);
$chaine_modif=str_replace("ñ","n",$chaine_modif);
$chaine_modif=str_replace("ô","o",$chaine_modif);
$chaine_modif=str_replace("ö","o",$chaine_modif);
$chaine_modif=str_replace("œ","o",$chaine_modif);
$chaine_modif=str_replace("ù","u",$chaine_modif);
$chaine_modif=str_replace("û","u",$chaine_modif);
$chaine_modif=str_replace("ü","u",$chaine_modif);
$chaine_modif=str_replace("***","3_etoiles",$chaine_modif);
$chaine_modif=str_replace("**","2_etoiles",$chaine_modif);
$chaine_modif=str_replace("2*","2_etoiles",$chaine_modif);
$chaine_modif=str_replace("3*","3_etoiles",$chaine_modif);
$alphabet=array("a","z","e","r","t","y","u","i","o","p","q","s","d","f","g","h","j","k","l","m","w","x","c","v","b","n","1","2","3","4","5","6","7","8","9","0");
$taille_alphabet=count($alphabet);
$longueur_chaine=strlen($chaine_modif);
for ($i=0;$i<$longueur_chaine;$i++)
{
$caractere=substr($chaine_modif,$i,1);
$caractere_ok=false;
for($j=0;$j<$taille_alphabet;$j++)
{
if($caractere==$alphabet[$j]) $caractere_ok=true;
}
if($caractere_ok==false) $chaine_modif=str_replace($caractere,"_",$chaine_modif);
}
$chaine_modif=str_replace("___","_",$chaine_modif);
$chaine_modif=str_replace("__","_",$chaine_modif);
$premier_char=substr($chaine_modif,0,1);
if($premier_char=="_")
{ $i=0;
while(substr($chaine_modif,$i,1)=="_")
{
$caractere=substr($chaine_modif,$i,1);
$caractere="";
$i++;
}
}
$nb_char=strlen($chaine_modif);
$premier_char=substr($chaine_modif,0,1);
if($premier_char=="_")
{ $i=0;
while(substr($chaine_modif,$i,1)=="_")
{
$chaine_modif=substr($chaine_modif,$i+1,$nb_char);
$i++;
}
}
$dernier_char=substr($chaine_modif,$nb_char-1,1);
if($dernier_char=="_") $chaine_modif=substr($chaine_modif,0,$nb_char-1);
return $chaine_modif;*/
$sortie=$chaine;
$sortie=strtolower($sortie);
$expression='/\&/';
$sortie = preg_replace($expression,"_et_",$sortie);
$expression ='/[àáâãäåæ]/';
$sortie = preg_replace($expression,"a",$sortie);
$expression ='/ç/';
$sortie = preg_replace($expression,"c",$sortie);
$expression ='/[éèêë]/';
$sortie = preg_replace($expression,"e",$sortie);
$expression ='/[ìíîï]/';
$sortie = preg_replace($expression,"i",$sortie);
$expression ='/ñ/';
$sortie = preg_replace($expression,"n",$sortie);
$expression ='/[òðòóôõö]/';
$sortie = preg_replace($expression,"o",$sortie);
$expression ='/[ùúûü]/';
$sortie = preg_replace($expression,"u",$sortie);
$expression ='/[ýÿ]/';
$sortie = preg_replace($expression,"y",$sortie);
$expression ='/\*\*\*|3\*/';
$sortie = preg_replace($expression,"3_etoiles",$sortie);
$expression ='/\*\*|2\*/';
$sortie = preg_replace($expression,"2_etoiles",$sortie);
$expression='/[^0-9a-zA-Z]/';
$sortie = preg_replace($expression,"_",$sortie);
$expression='/___|__/';
$sortie = preg_replace($expression,"_",$sortie);
$sortie=trim($sortie,"_");
return $sortie;
}