[PHP] - Expression régulière

Fermé
anelor - 19 févr. 2007 à 14:15
 Farfadh - 25 sept. 2007 à 12:51
Bonjour,

Novice en expressions régulieres, j'aimerai savoir s'il est possible de récupérer une chaine dans ce cas précis :

<balisedébut>(.*)</balisefin>
j'aimerai que le terme COMPLET </balisefin> ne soit pas compris dans le résultat de ma demande, puisque mon code est de cette sorte
<balisedébut>blabla</balisefin><balisedébut></balisefin><balisedébut></balisefin>

Je me retrouve donc avec le résultat :
blabla</balisefin><balisedébut></balisefin><balisedébut>
et non juste le "blabla" attendu

merci de votre aide !
A voir également:

3 réponses

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
19 févr. 2007 à 17:25
Bonjour,

Je ne pense pas que tu puisses exclure toute une chaine.
Par contre, tu peux exclure toutes les balises comme ceci :
<balisedébut>([^<]*)</balisefin>
Mais cela ne fonctionnera pas si tu as des sous-balises, du genre
<balisedébut>truc<balise intérieure>chose</balise intérieure></balisefin>

Xavier
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
19 févr. 2007 à 18:50
Je ne sais pas si en php on à le quantificateur ?
A savoir que le quantificateur * est gourmand et *? et moins gourmand

Voilà avec Perl
$ echo '<balisedébut>blabla</balisefin><balisedébut></balisefin><balisedébut></balisefin>' | perl -ne 'print "\$1 = $1\n" if /<balisedébut>(.*?)<\/balisefin>/'
$1 = blabla


0
Je viens de tester avec PHP, le quantificateur *? ne fonctionne pas en expression régulière POSIX. Je vais tester en PCRE dès que je saurai comment faire.

Ce problème m'intéresse au plus haut point, j'ai fait un autre test de la façon suivante :

<balisedébut>(.*)<\/balisefin>((.*)<\/balisefin>)*

Mais cela ne fonctionne pas.

Si jamais quelqu'un parvenait à résoudre ce problème, faites-le moi savoir.
0