function MakeUrl($title)
{
$a_remplacer = array('À','Á','Â','Ã','Ä','Å','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ò','Ó','Ô','Õ','Ö','Ù','Ú','Û','Ü','Ý','à','á','â','ã','ä','å','ç','è','é','ê','ë','ì','í','î','ï','ð','ò','ó','ô','õ','ö','ù','ú','û','ü','ý','ÿ','ñ',' ');
$remplacement = array('A','A','A','A','A','A','C','E','E','E','E','I','I','I','I','O','O','O','O','O','U','U','U','U','Y','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','o','o','o','o','o','o','u','u','u','u','y','y','n','-');
$url = str_replace($a_remplacer,$remplacement,$rawurl);
$url = strtolower($url);
$url = preg_replace('/[^a-zA-Z0-9][-]+/','-', $url);
return($url);
}
J'ai donc changé la ligne en preg-replace, délimité par des / / et ajouté le [-]+ qui dit que quel que soit le nombre de - il le remplace par un seul -.
Après ça je pense que tu seras pas loin d'avoir terminé d'optimiser ta fonctionBen heuu bonne question![]()
En fait j'aimerais enlever tous les caractères autres que a-z et 0-9 et les remplacer par - .
Bon deja je peux enlever le A-Z, il sert a rien car j'ai fait un strtolower avant.
function MakeUrl($title)
{
$a_remplacer = array('À','Á','Â','Ã','Ä','Å','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ò','Ó','Ô','Õ','Ö','Ù','Ú','Û','Ü','Ý','à','á','â','ã','ä','å','ç','è','é','ê','ë','ì','í','î','ï','ð','ò','ó','ô','õ','ö','ù','ú','û','ü','ý','ÿ','ñ',' ');
$remplacement = array('A','A','A','A','A','A','C','E','E','E','E','I','I','I','I','O','O','O','O','O','U','U','U','U','Y','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','o','o','o','o','o','o','u','u','u','u','y','y','n','-');
$url = str_replace($a_remplacer,$remplacement,$rawurl);
$url = strtolower($url);
$url = preg_replace('/[^a-z0-9]/','-', $url);
$url = preg_replace('/[-]+/','-', $url);
return($url);
}
Pour la deuxième regex, tu n'as pas besoin de déclarer une classe de caractère puisque tu n'en cherches qu'un.Bon j'ai du me taper 2-3 tutos, pasque bon je m'étais pas encore assez bien documenté sur les regex.
Donc voila le code qui marche finalisé, ce qui me chipote encore c'est que j'ai du faire 2 regex, je sais pas si je peux n'en faire que une :
function MakeUrl($title) { $a_remplacer = array('À','Á','Â','Ã','Ä','Å','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ò','Ó','Ô','Õ','Ö','Ù','Ú','Û','Ü','Ý','à','á','â','ã','ä','å','ç','è','é','ê','ë','ì','í','î','ï','ð','ò','ó','ô','õ','ö','ù','ú','û','ü','ý','ÿ','ñ',' '); $remplacement = array('A','A','A','A','A','A','C','E','E','E','E','I','I','I','I','O','O','O','O','O','U','U','U','U','Y','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','o','o','o','o','o','o','u','u','u','u','y','y','n','-'); $url = str_replace($a_remplacer,$remplacement,$rawurl); $url = strtolower($url); $url = preg_replace('/[^a-z0-9]/','-', $url); $url = preg_replace('/[-]+/','-', $url); return($url); }
Code : Tout sélectionner
$url = preg_replace('/-+/','-', $url);