Регулярное выражение в PHP: как создать шаблон для таблиц в html

Я использую последний PHP. Я хочу проанализировать HTML-страницу, чтобы получить данные.

HTML:

<table class="margin15" style="margin-left: 0pt; margin-right: 0pt;" width="100%" align="left" border="0" cellpadding="0" cellspacing="0"> TRs, TDs, Data </table> <table class="margin15" style="margin-left: 0pt; margin-right: 0pt;" width="100%" align="left" border="0" cellpadding="0" cellspacing="0"> TRs, TDs, Data </table> <table class="margin15" style="margin-left: 0pt; margin-right: 0pt;" width="100%" align="left" border="0" cellpadding="0" cellspacing="0"> TRs, TDs, Data </table> <table class="margin15" style="margin-left: 0pt; margin-right: 0pt;" width="100%" align="left" border="0" cellpadding="0" cellspacing="0"> TRs, TDs, Data </table> 

Код PHP:

 <?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://www.test.com/mypage.html'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($ch); $pattern = '/<table class="margin15" style="margin-left: 0pt; margin-right: 0pt;" width="100%" align="left" border="1" cellpadding="0" cellspacing="0">[^~]</table>/'; preg_match_all($pattern, $result, $matches); print_r($matches); ?> 

Я не могу получить все таблицы. Когда я использую простой $ pattern = '/ table /'; , это дает мне точный результат. Как создать шаблон, чтобы получить всю таблицу в одном месте массива?

Анализ HTML с использованием regex – это боль в лучшем случае, поскольку HTML не является регулярным, я предлагаю вам использовать Simple HTML DOM .

Вы не можете анализировать [X] HTML с регулярным выражением , но можете попробовать:

 $pattern = '#<table(?:.*?)>(.*?)</table>#'; 

Это не будет работать, если есть вложенные таблицы.

Пожалуйста, взгляните на этот ответ . В нем описывается использование парсера HTML в PHP, который вы хотите сделать.

Или просто используйте предложения php класса php. Я думаю, что он может делать то же самое, что и простой html dom, но намного быстрее (не «поймите меня неправильно», мне очень нравится Simple Html DOM, но медленнее для файлов с несколькими десятками строк)