Besoin d'aide pour une expression régulière - PHP - Programmation
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 :  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§ion=$2&page=$3¶=$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 : 
 | 
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 : 
 | 
Et virer le slash en PHP.
valou.
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 
======================= > 
 
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
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 ? 
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§ion=$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§ion=$2&page=$3¶=$4 [L]
Help please
Merci