Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/09/2011, 18h40   #1
Invité de passage
 
Inscription : juin 2009
Messages : 4
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 4
Points : 1
Points : 1
Par défaut Problème regex analyse d'URL

Bonjour,
j'ai réalisé ces motifs

Code :
1
2
3
$routes['|^([a-z]{2})/(.+)/category/(.+)/([0-9]*)$|']='lang=$1&page=$2&cat=$3&p_num=$4';
 
$routes['|^([a-z]{2})/(.+)/category/(.+)$|']='lang=$1&page=$2&cat=$3';
la seule chose qui change est le /([0-9]*) à la fin...
j'avais pensé à

Code :
$routes['|^([a-z]{2})/(.+)/category/(.[^/]+)/?([0-9]*)$|']='lang=$1&page=$2&cat=$3&p_num=$4';
qui me permet de récupérer toutes les variables mais si l'élément apres /category/ contient des "/" ca ne le prend pas
j'ai du remettre ma regexp en 2 partie du coup

est il possible de rassembler ces motifs en un seul, car pout le moment si je ne met que:

Code :
$routes['|^([a-z]{2})/(.+)/category/(.+)/?([0-9]*)$|']='lang=$1&page=$2&cat=$3&p_num=$4';
il ne me reconnait pas le dernier / et me met la valeur de p_num à l'intérieur de cat

exemple :
.../category/ma-categorie/ma-sous-categorie/4

donne
cat=/category/ma-categorie/ma-sous-categorie/4
p_num=null

avec les 2 regex séparé j'ai les bonnes valeurs en fonction du chemin mais l'idée est de le rassembler en une.

merci d'avance

Cédric
cladff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 10h45   #2
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Code :
'|^([a-z]{2})/(.+)/category/([^/]+)/?([0-9]*)$|'
Te permet de matcher:
Code :
1
2
3
 
'en/page/category/titi/4'
'en/page/category/titi'
__________________
Get your motor runnin'
Head out on the highway...
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 11h07   #3
Modérateur
 
Avatar de s.n.a.f.u
 
Homme
Développeur Web
Inscription : août 2006
Messages : 2 700
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : août 2006
Messages : 2 700
Points : 3 357
Points : 3 357
Citation:
Envoyé par Mr N. Voir le message
Code :
'|^([a-z]{2})/(.+)/category/([^/]+)/?([0-9]*)$|'
Te permet de matcher:
Code :
1
2
3
 
'en/page/category/titi/4'
'en/page/category/titi'
J'apporterais une petite optimisation :

Code :
'#^([a-z]{2})/(.+)/category/([^/]+)(/[0-9]+)?$#'
__________________
  • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
  • Merci d'utiliser les balises de code (# dans l'éditeur)
  • Si votre problème est réglé, merci d'utiliser le bouton
S.N.A.F.U
s.n.a.f.u est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 11h17   #4
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
sauf que le / est capturé et ça oblige ensuite à l'enlever en php...
__________________
Get your motor runnin'
Head out on the highway...
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 11h24   #5
Invité de passage
 
Inscription : juin 2009
Messages : 4
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 4
Points : 1
Points : 1
Merci pour l'aide

Citation:
Envoyé par s.n.a.f.u Voir le message
J'apporterais une petite optimisation :

Code :
'#^([a-z]{2})/(.+)/category/([^/]+)(/[0-9]+)?$#'


par contre j'ai besoin de pouvoir mettre des "/" dans la partie apres category
hors en mettant ([^/]+) il ne me prendra pas les /

en somme il faut que je puisse avoir les "/" apres /category/ et que le dernier paramettre soit reconu en tant que nombre

merci d'avance
cladff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 11h41   #6
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Peux-tu donner des exemples concrets ?
__________________
Get your motor runnin'
Head out on the highway...
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 13h25   #7
Invité de passage
 
Inscription : juin 2009
Messages : 4
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 4
Points : 1
Points : 1
désolé je mangeais...

donc un exemple concret serait


Code :
1
2
3
4
5
6
7
8
9
10
11
12
fr/mapage/masouspage/sous...page/category/macategory/souscategory/sous...category/10
 
on doit recevoir:
lang=fr
page=mapage/masouspage/sous...page
cat=macategory/souscategory/sous...category
p_num=10
 
 sachant que le parametre p_num est optionnel et que ce chemin peut etre :
 
 
fr/mapage/masouspage/sous...page/category/macategory/souscategory/sous...category
et renvoi les mêmes données

merci
cladff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 19h06   #8
Modérateur
 
Avatar de s.n.a.f.u
 
Homme
Développeur Web
Inscription : août 2006
Messages : 2 700
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : août 2006
Messages : 2 700
Points : 3 357
Points : 3 357
UN premier jet rapide

Code :
1
2
3
4
5
6
7
8
9
10
<?php
$pattern = '#^(?P<lang>[a-z]{2}) / (?P<page>.*page)+ / (?P<cat>.*category)+ /? (?P<p_num>[0-9]*)?$#x';
 
$str = 'fr/mapage/masouspage/sous...page/category/macategory/souscategory/sous...category/10';
preg_match($pattern, $str, $m);
var_dump($m);
 
$str = 'fr/mapage/masouspage/sous...page/category/macategory/souscategory/sous...category';
preg_match($pattern, $str, $m);
var_dump($m);
__________________
  • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
  • Merci d'utiliser les balises de code (# dans l'éditeur)
  • Si votre problème est réglé, merci d'utiliser le bouton
S.N.A.F.U
s.n.a.f.u est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h19.


 
 
 
 
Partenaires

Hébergement Web