Кажется, это случай жадности ячейки таблицы. Мой тест также дал мне постороннее <td>
. Но есть простой способ сделать регулярное выражение более строгим:
$rx = '~<td class="alt1" align="center">.*</td> <td class="alt2" align="center">([\d,]+)</td> </tr>~isU';
Здесь \d+
, используемый вместо .*?
, возвращает только точные совпадения. Предыдущий .*
слишком много кушал.
Общий совет: вы можете использовать [^<>]*
для безопасного сопоставления текстового содержимого в квадратных скобках вместо .*
. Возможно, примените \s+
вместо пробелов.