[Résolu!!] traitement php de la variable a mettre dans l'url

Discussion dans 'URL Rewriting et .htaccess' créé par Cannibal Kro, 14 Janvier 2009.

  1. Cannibal Kro
    Cannibal Kro Nouveau WRInaute
    Inscrit:
    6 Janvier 2009
    Messages:
    4
    J'aime reçus:
    0
    Bonsoir,
    J'utilise l'url rewriting pour mon site.
    voici ma règle:
    RewriteRule ^histoire-([0-9]*)-([-0-9A-Za-z]*)\.php$ /histoire.php?num=$1 [L]

    Ainsi je souhaite mettre en première variable l'id d'une histoire, qui servira à la redirection. Je souhaite aussi mettre "pour faire joli" le titre de cette histoire dans l'url (deuxième variable de la règle).

    Seulement dans ma page php, comment faut il traiter ma variable $titre pour la transformer en lettres uniquement (avec tirets autorisés)? Pour qu'ainsi je puisse utiliser la variable traitée pour afficher une url correcte? CAD pas de métacaractères, juste du texte minuscule et des tirets...
     
  2. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 875
    J'aime reçus:
    72
    Il te faut mettre en place une fonction PHP qui va te générer une url propre à partir de ton titre. Normalement il y a des exemples qui trainent sur le forum, ou sinon tu peux installer un CMS genre SPIP et regarder comment eux font (je n'ai pas ça sous la main présentement).
     
  3. Cannibal Kro
    Cannibal Kro Nouveau WRInaute
    Inscrit:
    6 Janvier 2009
    Messages:
    4
    J'aime reçus:
    0
    Code:
    $titrelien = strtolower($donneespres['titre']);
    					$titrelien=str_replace(array('ä', 'ê', 'ë', 'ô', 'î', 'ï', 'ô', 'ö', 'û', 'ü', 'ÿ', '€', '#', '+', '*', ' ', '\'', '"', '²', '&', 'é', '~', '"', '{', '(', '[', '|', 'è', '`', 'ç', '^', 'à', 'à', ')', '}', '=', '}', '^', '$', '£', '¤', 'ù', '%', '*', 'µ', ',', '?', ';', ':', '/', '!', '§', '>', '<'), '-', $titrelien);
    Est-ce que cette fonction est assez otpimale/sécurisée?
     
  4. screuscreu
    screuscreu WRInaute impliqué
    Inscrit:
    14 Janvier 2008
    Messages:
    701
    J'aime reçus:
    0
    utilise mon urrlName($titre) ... marche nickel. Je ne connais pas la source et ne suis pas l'auteur mais un utilisateur qui à un peu modifié la chose !

    Code:
    	function enleve_accents ($chaine)
    	{
    		$reg = '/&(.)(acute|grave|circ|uml|cedil|ring|tilde|slash);/';
    		return preg_replace($reg, '\1', htmlentities($chaine));
    	}
    	
    	function suppr_speciaux ($chaine)
    	{
    		$reg = '|(&[a-zA-Z0-9]*;)|U';
    		return preg_replace($reg, '-', $chaine);
    	}
    	
    	function is_utf8 ($string)
    	{
    		return ! strlen(preg_replace(',[\x09\x0A\x0D\x20-\x7E]' . # ASCII
    	'|[\xC2-\xDF][\x80-\xBF]' . # non-overlong 2-byte
    	'|\xE0[\xA0-\xBF][\x80-\xBF]' . # excluding overlongs
    	'|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}' . # straight 3-byte
    	'|\xED[\x80-\x9F][\x80-\xBF]' . # excluding surrogates
    	'|\xF0[\x90-\xBF][\x80-\xBF]{2}' . # planes 1-3
    	'|[\xF1-\xF3][\x80-\xBF]{3}' . # planes 4-15
    	'|\xF4[\x80-\x8F][\x80-\xBF]{2}' . # plane 16
    	',sS', '', $string));
    	}
    	
    	function urlName ($texte)
    	{
    		if (is_utf8($texte))
    			$texte = utf8_decode($texte);
    		$texte = strtolower(suppr_speciaux(enleve_accents($texte)));
    		$texte = preg_replace("/(l'|d'|t'| et | st | de | un | le | de | du | lui | mon | ton | les | son | sa | ca | je | tu | il | elle | nous | vous | ils | elles | la | ce | de | son | dont | qui | a | une | ne | des | en |t-|-t)/", " ", $texte);
    		$reg = '|([^a-z0-9]+)|';
    		$texte = preg_replace($reg, '-', $texte);
    		return trim($texte, '-');
    	}
    
    Tu remarqueras que tu peux enlever des mots parasites dans la function urlName ... si tu veux !
     
  5. screuscreu
    screuscreu WRInaute impliqué
    Inscrit:
    14 Janvier 2008
    Messages:
    701
    J'aime reçus:
    0
    Ca devrait plus ou moins marcher, jusqu'au jouroù quelqu'un te mettra des lettres majuscules accentuées (quoi que ça en théorie tu le gère) ou d'autres caractères ... regarde ma solution elle marche a 100%

    EDIT : en plus je sais pas ce que fait ta fonction à toi, mais j'ai des doutes sur le résultat en sortie ;)
    Compare avec un texte pris au hazard sur un site et tu verras celui que tu veux
     
  6. Cannibal Kro
    Cannibal Kro Nouveau WRInaute
    Inscrit:
    6 Janvier 2009
    Messages:
    4
    J'aime reçus:
    0
    Okay merci je pense prendre ta solution car comme tu dis ça revient assez souvent sur les plateformes sociales les caractères genre les coeurs, signes chinois etc...
     
  7. screuscreu
    screuscreu WRInaute impliqué
    Inscrit:
    14 Janvier 2008
    Messages:
    701
    J'aime reçus:
    0
    [Résolu] ? (pour éditer ton titre)
     
  8. Cannibal Kro
    Cannibal Kro Nouveau WRInaute
    Inscrit:
    6 Janvier 2009
    Messages:
    4
    J'aime reçus:
    0
    of course :D merci!
     
Chargement...
Similar Threads - [Résolu traitement php Forum Date
Problème images en https (forum phpbb) [résolu] Développement d'un site Web ou d'une appli mobile 18 Novembre 2017
[Résolu] Redirection 301 FR vers EN sur Prestashop uniquement sur outils Google ? Problèmes de référencement spécifiques à vos sites 11 Septembre 2017
[résolu] Passage à HTTPS, comment tester une page ? Développement d'un site Web ou d'une appli mobile 7 Septembre 2017
[Résolu] squat nom de domaine - que faire ? Débuter en référencement 16 Mai 2017
[Résolu] Redirection d'une famille d'URL URL Rewriting et .htaccess 9 Mars 2017
[Résolu] Diaporama et SEO Débuter en référencement 17 Janvier 2017
[résolu]Redirection monsite.fr/index.html sur monsite.fr et seo URL Rewriting et .htaccess 16 Janvier 2017
[resolu]Publicité facebook lié au compte instagram Facebook 12 Décembre 2016
[résolu] Récupérer des valeurs issues de javascript pour les mettre en base MySQL Développement d'un site Web ou d'une appli mobile 18 Juillet 2016
[résolu] Faire une redirection sauf pour mon adresse IP URL Rewriting et .htaccess 15 Juin 2016
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice