Besoin d'aide pour une expression régulière

Besoin d'aide pour une expression régulière - PHP - Programmation

Marsh Posté le 28-03-2009 à 17:03:28    

voilà, je suis en train de travailler sur des URL et j'ai un petit prbolème avec mes expressions régulières.
 
Mon URL est de cette forme : /categorie/section/titre.html, mais des fois cela peut-être de la forme /categorie/section/titre/xx.html (ou xx est un nombre à 1 ou 2 chiffres)
 
Pour le moment j'utilise ca :  
RewriteRule ^(.*)/(.*)/(.*).html$ blabla.php?cat=$1&section=$2&page=$3 [L]
 
Ca marche bien sauf que je n'arrive pas à récupérer le '/xx' dans une autre variable s'il est présent
 
je bidouille l'expression régulière mais sans succès avec des choses comme :  
 
RewriteRule ^(.*)/(.*)/(.*)(/[0-9]{0,2})?.html$ blabla.php?cat=$1&section=$2&page=$3&para=$4 [L]
 
Help please :/
 
Merci :)

Reply

Marsh Posté le 28-03-2009 à 17:03:28   

Reply

Marsh Posté le 30-03-2009 à 00:30:02    

gathor a écrit :

voilà, je suis en train de travailler sur des URL et j'ai un petit prbolème avec mes expressions régulières.

 

Mon URL est de cette forme : /categorie/section/titre.html, mais des fois cela peut-être de la forme /categorie/section/titre/xx.html (ou xx est un nombre à 1 ou 2 chiffres)

 

Pour le moment j'utilise ca :
RewriteRule ^(.*)/(.*)/(.*).html$ blabla.php?cat=$1&section=$2&page=$3 [L]

 

Ca marche bien sauf que je n'arrive pas à récupérer le '/xx' dans une autre variable s'il est présent

 

je bidouille l'expression régulière mais sans succès avec des choses comme :

 

RewriteRule ^(.*)/(.*)/(.*)(/[0-9]{0,2})?.html$ blabla.php?cat=$1&section=$2&page=$3&para=$4 [L]

 

Help please :/

 

Merci :)

 

(plein de trucs)? ne peux pas marcher, "?" porte sur un seul caractère ou classe de caractère à la fois.
Et aussi n'oublie pas l'antislash devant le point, c'est un caractère réservé.

 

Sinon ça devrait le faire :

 
Code :
  1. ^([^/]*)/([^/]*)/([^/]*)(/([0-9]{0,2})|)\.html$


Attention tu accèdes au chiffre avec $5, $4 correspond au chiffre plus le slash avant.

 

Si jamais ça n'accepte pas le coup des parenthèses intérieures (en Perl/preg_* ça marche mais là je sais plus), tu peux toujours faire

Code :
  1. ^([^/]*)/([^/]*)/([^/]*)(/[0-9]{0,2}|)\.html$


Et virer le slash en PHP.

 

valou.


Message édité par theredled le 30-03-2009 à 00:31:03

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 01-04-2009 à 20:18:04    

Merci j'vais essayer et étudier tout ca :)

Reply

Marsh Posté le 19-10-2012 à 21:30:35    


Bonjour,
 
Je me permets je n'arrive pas à mettre en place correctement un "preg_replace" (php) pour faire ce qui suit. Pouvez vous m'aider ?
 
 
======================= >
======================= > CSS ORIGINAL :  
======================= >
 
* {
 clear:none;
}
 
article, aside, details, figcaption, figure, footer, header, hgroup, nav, section {
 display:block;
}
 
aside a, aside .a, aside p a, aside p .a {
 color:#f7f7f7;
}
 
 
#informations_legales aside p a, #informations_legales aside p .a {
 color:@666666;
}
 
audio, canvas, video {
 display:inline-block;
}
 
audio:not([controls]) {
 display:none;
}
 
======================= >
======================= > TRANSFORMER DE CETTE MANIERE (dupliquer et ajouter sous forme de class portant le même non que le type de balise HTML5) :  
======================= >
 
* {
 clear:none;
}
 
article, .article, aside, .aside, details, .details, figcaption, .figcaption, figure, .figure, footer, .footer, header, .header, hgroup, .hgroup, nav, .nav, section, .section {
 display:block;
}
 
aside a, .aside a, aside .a, .aside .a, aside p a, .aside p a, aside p .a, .aside p .a {
 color:#f7f7f7;
}
 
 
#informations_legales aside p a, #informations_legales .aside p a, #informations_legales aside p .a, #informations_legales .aside p .a {
 color:@666666;
}
 
audio, .audio, canvas, .canvas, video, .video {
 display:inline-block;
}
 
audio:not([controls]), .audio:not([controls]) {
 display:none;
}
 
 
======================= >
======================= > LISTE DE BALISES HTML5 CONCERNEES : article|aside|audio|canvas|command|datalist|details|embed|figcaption|figure|footer|header|hgroup|keygen|mark|meter|nav|output|progress|rp|rt|ruby|section|source|summary|time|video|wbr
======================= >
 

Reply

Marsh Posté le 20-10-2012 à 12:50:25    

Ca n'a réeellement pas de sens de modifier une CSS comme ça à la volée en PHP, et puis à ce prix là autant utiliser directement les balises HTML et intégrer HTML5shiv


---------------
Blablaté par Harko
Reply

Marsh Posté le 21-10-2012 à 01:54:11    

Tu mets ton css dans une chaine de caractères
tu t'assure que chaque { est suivit d'un \n : strtr($css, array('{'=>"{\n" ));
tu t'assure que chaque } est suivit d'un \n : strtr($css, array('}'=>"}\n" ));
et tu en profites pour éliminer les \n autour des virgules
 
là tu es à peu près sûr d'avoir le sélecteur sur une ligne
tu attrapes les lignes se terminant par { avec le pattern : (.+)\s*{$
tu fais un preg_split avec le pattern : \s*,\s*
 
et là tu as une liste du style
array(
0=>'audio',
1=>'canvas',
2=>'video'
)
 
tu t'arranges pour obtenir un tableau $trans du style
array(
'audio'=>'audio, .audio',
'canvas'=>'canvas, .canvas',
'video'=>'video, .video'
)
 
ensuite il te suffit de faire un $css = strtr($css, $trans); pour pusher les modifications dans ton css.
 
J'espère que c'est clair ? :)


Message édité par CyberDenix le 21-10-2012 à 01:57:16

---------------
Directeur Technique (CTO)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed