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