Expressions Régulières ! J'ai une question

WRInaute discret
Bonjour à tous,

Je débute en expression régulière :roll: et j'ai une petite question.

J'utilise depuis peu le site http://www.gethifi.com/tools/regex pour tester mes expressions. J'arrive à faire ce que je veux (enfin presque :lol: ), mais quand je dois passer en PHP c'est la cata !

Un exemple : j'ai trois TR dans lesquelles j'ai des <TD> à extraire. Mais je ne veut que le premier TR que j'identifie avec un ID.

Voici le code que j'ai testé sur le site ci-dessus et ça marche très bien, mais en php j'ai une erreur. Mais quand je supprime les ? de mon expression, PHP me renvoie tous les TR.

Code:
<tr id="pdv942".*?>(.*?)<\/tr>

Code:
$toto =  ereg('<tr id="pdv942".*?>(.*?)<\/tr>' ,$toto,$retour);

Je pensé que les expressions régulières fonctionnait partout de la même manière.

Merci pour votre aide.

Orsam
 
WRInaute impliqué
Ils servent à quoi les « ? » pour toi ?
Parce que soit tu met « * », soit tu met « ? », mais pas les deux.
 
WRInaute accro
faux, la mention ".*?" existe et permet la récupération séquentielle de tous les résultats. Si tu utilises ".*" tu n'auras que le premier résultat trouvé.
 
WRInaute discret
Merci pour vos réponses,

Mais non, PHP me retourne tout les TR... Je ne comprends vraiment pas...

Code:
$toto = '<tr id="toto">';
$toto .= '<td>1</td>';
$toto .= '<td>2</td>';
$toto .= '</tr>';
$toto .= '<tr id="tata">';
$toto .= '<td>33</td>';
$toto .= '<td>34</td>';
$toto .= '</tr>';

$toto =  ereg('<tr id="toto".*>(.*)<\/tr>' ,$toto,$retour);

Merci encore pour votre aide.

Orsam
 
WRInaute discret
J'ai trouvé !!!! :D

Avec les conseils de Leonick, et preg_match voici ce que ça donne :

Code:
preg_match('/<tr id="toto".*?>(.*?)<\/tr>/i' ,$toto,$retour);

Merci encore pour votre aide !

Orsam.
 
Discussions similaires
Haut