Я использую последний 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, но медленнее для файлов с несколькими десятками строк)