Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

probleme de regexp

3 réponses
Avatar
pollux
bonjour j'ai un petit probleme de regexp que je n'arrive à résoudre

je suis en train de faire mon petit language de template:

j'ai un script du style
{if session[acces] == "superadmin"}
<input name="submit" type"submit" value="Activer micro-site"/>
{/if}

et j'utilise ça pour capturer
preg_match_all('`{if ([^}]*)}(.*){/if}`', $this->page, $out);

mais j'ai un résultat vide :
Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) )

qu'est ce que j'ai fait de pas bien ?

3 réponses

Avatar
jjsolari
pollux wrote:

j'ai un script du style
{if session[acces] == "superadmin"}
<input name="submit" type"submit" value="Activer micro-site"/>
{/if}

et j'utilise ça pour capturer
preg_match_all('`{if ([^}]*)}(.*){/if}`', $this->page, $out);


Pollux,

Les caractères « { » et « } » sont significatifs dans les expressions
rationnelles. Essayer celle-ci :

`{if([^}]+}(.*){/if}`

qça,

JJS.

Avatar
Olivier Miakinen

j'ai un script du style
{if session[acces] == "superadmin"}
<input name="submit" type"submit" value="Activer micro-site"/>
{/if}

et j'utilise ça pour capturer
preg_match_all('`{if ([^}]*)}(.*){/if}`', $this->page, $out);

mais j'ai un résultat vide


http://fr.php.net/manual/fr/reference.pcre.pattern.modifiers.php
<cit.>
s (PCRE_DOTALL)
Avec cette option, le méta-caractère point (.) remplace n'importe
quel caractère, y compris les nouvelles lignes. Sans cette option, le
caractère point ne remplace pas les nouvelles lignes.
</cit.>

Donc : preg_match_all('`{if ([^}]*)}(.*){/if}`s', $this->page, $out);
----^

--
Olivier Miakinen
Aidez Saburi à rester près de sa famille et poursuivre ses études
en France, signez la pétition :
<http://www.fcpe94.ouvaton.org/article_petition.php3?id_article=9>

Avatar
Olivier Miakinen

Les caractères « { » et « } » sont significatifs dans les expressions
rationnelles.


Ah oui, je n'y avais pas pensé (d'habitude ce sont des chiffres que l'on
met entre les accolades).

Essayer celle-ci :

`{if([^}]+}(.*){/if}`


Et donc, en combinant les deux :

`{if([^}]+}(.*){/if}`s

--
Olivier Miakinen
Aidez Saburi à rester près de sa famille et poursuivre ses études
en France, signez la pétition :
<http://www.fcpe94.ouvaton.org/article_petition.php3?id_article=9>