[Résolu!!] traitement php de la variable a mettre dans l'url
8 messages
• Page 1 sur 1
Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics
- Cannibal Kro
- Nouveau WRInaute

- Messages: 4
- Inscription: 6 Jan 2009
[Résolu!!] traitement php de la variable a mettre dans l'url
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...
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...
Dernière édition par Cannibal Kro le Mer Jan 14, 2009 20:13, édité 1 fois.
-

UsagiYojimbo - WRInaute accro

- Messages: 8581
- Inscription: 23 Nov 2005
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).
- Cannibal Kro
- Nouveau WRInaute

- Messages: 4
- Inscription: 6 Jan 2009
- Code: Tout sélectionner
$titrelien = strtolower($donneespres['titre']);
$titrelien=str_replace(array('ä', 'ê', 'ë', 'ô', 'î', 'ï', 'ô', 'ö', 'û', 'ü', 'ÿ', '€', '#', '+', '*', ' ', '\'', '"', '²', '&', 'é', '~', '"', '{', '(', '[', '|', 'è', '`', 'ç', '^', 'à', 'à', ')', '}', '=', '}', '^', '$', '£', '¤', 'ù', '%', '*', 'µ', ',', '?', ';', ':', '/', '!', '§', '>', '<'), '-', $titrelien);
Est-ce que cette fonction est assez otpimale/sécurisée?
-

screuscreu - WRInaute impliqué

- Messages: 968
- Inscription: 14 Jan 2008
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 !
Tu remarqueras que tu peux enlever des mots parasites dans la function urlName ... si tu veux !
- Code: Tout sélectionner
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 !
-

screuscreu - WRInaute impliqué

- Messages: 968
- Inscription: 14 Jan 2008
Cannibal Kro a écrit:
- Code: Tout sélectionner
$titrelien = strtolower($donneespres['titre']);
$titrelien=str_replace(array('ä', 'ê', 'ë', 'ô', 'î', 'ï', 'ô', 'ö', 'û', 'ü', 'ÿ', '€', '#', '+', '*', ' ', '\'', '"', '²', '&', 'é', '~', '"', '{', '(', '[', '|', 'è', '`', 'ç', '^', 'à', 'à', ')', '}', '=', '}', '^', '$', '£', '¤', 'ù', '%', '*', 'µ', ',', '?', ';', ':', '/', '!', '§', '>', '<'), '-', $titrelien);
Est-ce que cette fonction est assez otpimale/sécurisée?
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
- Cannibal Kro
- Nouveau WRInaute

- Messages: 4
- Inscription: 6 Jan 2009
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...
-

screuscreu - WRInaute impliqué

- Messages: 968
- Inscription: 14 Jan 2008
[Résolu] ? (pour éditer ton titre)
8 messages
• Page 1 sur 1
Formation recommandée sur ce thème :
Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- php mettre des < > dans une variable
- Comment mettre une variable texte dans un tableau en php ?
- [Résolu] Transformation de variable en constante PHP
- [Résolu] Transformer charset d'une variable en php.
- [RESOLU]ptite question avec un index.php variable
- [Résolu] passer une variable php dans le serveur
- Probleme variable php '.xxxx.' dans autre variable '.zzzz.'
- recuper une variable et mettre dans include
- Parrainage : mettre une variable en arrivant sur index
- mettre un sous domaine dans une variable.. et rediriger
- Google s'empare de Writely, un traitement de texte en ligne - 09-03-2006
- The Technology Behind Google - 28-06-2002
- Script de mise en cache des pages (PHP MySQL) - 09-08-2010
- Présentation de l'indexation Google - Googlebot, le robot de Google - 05-09-2008
- Configurer des nouveaux moteurs dans Google Analytics - 12-06-2007
- Le moteur d'Orange.fr répond aux questions géographiques - 09-02-2010
- Mise à jour des SiteLinks Google (Juin 2007) - 11-06-2007
Consultez la description détaillée des produits ou services de Google suivants : Google Docs
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
