-
Regex tout simple
Bonjour,
Je souhaite capturer tout ce qui se trouve entre <td> et </td>
<?php
$str='<table><tr><td>A</td><td>B</td></tr></table>';
ereg('<td>(.*)</td>', $str, $tab);
?>
Mon problème se situe au niveau du .* car voici le résultat
Array ( [0] => ABC [1] => ABC )
Comment indiquer au regex de s'arréter à chaque </td> rencontré ?
Merci.
-
Salut
Essaie avec :
Code:
preg_match_all('/<td>(.*)</td>/U', $str, $tab);
Ou :
Code:
preg_match_all('/<td>(.*)</td>/U', $str, $tab, PREG_SET_ORDER);
-
Merci Kirkis,
U était l'option qui me manquait.
Celle-ci convient parfaitement avec le \ à ne pas oublier :
Code:
preg_match_all('/<td>(.*)<\/td>/U', $str, $tab);
-
Ah, oui, en effet... Désolé.
J'aurais dû t'indiquer un délimiteur différent :
Code:
preg_match_all('#<td>(.*)</td>#U', $str, $tab);
De cette manière, il n'est pas utile d'échapper le slash et ça simplifie la lecture.