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;
}