У меня есть некоторый HTML, который выглядит так:
<tr class="row-even">
<td align="center">abcde</td>
<td align="center"><a href="deluserconfirm.html?user=abcde"><img src="../images/delete_x.gif" alt="Delete User" border="none" /></a></td>
</tr>
<tr class="row-odd">
<td align="center">efgh</td>
<td align="center"><a href="deluserconfirm.html?user=efgh"><img src="../images/delete_x.gif" alt="Delete User" border="none" /></a></td>
</tr>
<tr class="row-even">
<td align="center">ijkl</td>
<td align="center"><a href="deluserconfirm.html?user=ijkl"><img src="../images/delete_x.gif" alt="Delete User" border="none" /></a></td>
</tr>
И мне нужно получить значения abcde
, efgh
и ijkl
Это регулярное выражение, которое я сейчас использую:
preg_match_all('/(<tr class="row-even">|<tr class="row-odd">)<td align="center">(.*)<\/td><\/tr>/xs', $html, $matches);
Да, я не очень хорош в них. Как и в большинстве моих попыток регулярных выражений, это не работает. Кто-нибудь может сказать мне, почему?
Кроме того, я знаю о синтаксических анализаторах html / xml, но для этого потребуется значительный пересмотр кода. Так что на потом. Нам нужно придерживаться регулярных выражений на данный момент.
РЕДАКТИРОВАТЬ: чтобы уточнить, мне нужны значения между первым тегом <td align="center"></td>
после <tr class="row-even">
или <tr class="row-odd">