[RESOLU] Ne conserver qu'un seul tiret pour une URL propre

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Ne conserver qu'un seul tiret pour une URL propre

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

par Akedouille » 06 août 2012, 14:10

Merci de votre aide, j'ai obtenu ce que je voulais :)

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

par Ryle » 06 août 2012, 10:53

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

par xTG » 06 août 2012, 07:01

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.

Ne conserver qu'un seul tiret pour une URL propre

par akedouille » 06 août 2012, 01:16

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