Page 1 sur 1

Ne conserver qu'un seul tiret pour une URL propre

Posté : 06 août 2012, 01:16
par akedouille
Bonjour à la communauté !

Voila j'ai un soucis avec les URL générées sur mon site. Avec un titre tel que "quelle belle femme !", l'URL générée ressemblera à ça : http://www.monsite.com/quelle-belle-femme--- . J'aimerai que l'URL soit plus clean, en ne gardant qu'un seul tiret à la fois.

Voici la fonction qui génère le tout :
public static function seoname($name) {
	$name = strtolower($name);
	$translit = array('Á'=>'A','À'=>'A','Â'=>'A','Ä'=>'A','Ã'=>'A','Å'=>'A','Ç'=>'C','É'=>'E','È'=>'E','Ê'=>'E','Ë'=>'E','Í'=>'I','Ï'=>'I','Î'=>'I','Ì'=>'I','Ñ'=>'N','Ó'=>'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','ñ'=>'n','ó'=>'o','ò'=>'o','ô'=>'o','ö'=>'o','õ'=>'o','ú'=>'u','ù'=>'u','û'=>'u','ü'=>'u','ý'=>'y','ÿ'=>'y');
	$name = strtr($name, $translit);
	return preg_replace('#[^a-zA-Z0-9\-\._]#', '-', $name);
Si quelqu'un pouvait m'aider, je lui en serais très reconnaissant :)

Merci d'avance

Re: Ne conserver qu'un seul tiret pour une URL propre

Posté : 06 août 2012, 07:01
par xTG
A la place de ton preg, remplaces tout ce que tu ne veux pas par un espace.
Puis utilises trim() pour virer les espaces sur les cotés.
Et enfin remplaces les espaces restants par des tirets.

Re: Ne conserver qu'un seul tiret pour une URL propre

Posté : 06 août 2012, 10:53
par Ryle
C'est la solution que j'utilise également, avec une petite subtilité lorsque je remplace les espaces par les tirets : s'il y a plusieurs espaces consécutifs au "milieu" de la chaine, je ne met qu'un seul tiret :)
$name = preg_replace("#[ ]+#", "-", $name);

Re: Ne conserver qu'un seul tiret pour une URL propre

Posté : 06 août 2012, 14:10
par Akedouille
Merci de votre aide, j'ai obtenu ce que je voulais :)