2012-02-09 3 views
0

Я пытаюсь извлечь таблицу из HTML, вот HTML-код для начала таблицы.Использование preg_match для извлечения таблицы

<table class='price' id='comp' style='clear:both;display:none'> 

Но когда я использую этот код PHP, никаких совпадений не найдено

preg_match("/<table class='price' id='comp' style='clear:both;display:none'>.*?<\/[\s]*table>/s", $buffer, $matches); 
print_r($matches); 

В таблицах, в HTML, я думаю, что проблема с утверждением preg_match.

+3

Не смешивать регулярное выражение с HTML. Вместо этого используйте XML-парсер. – hsz

+0

@hsz Почему бы и нет? Когда ему нужно только одно значение со всего сайта? Может быть, неправильный HTML-код может использовать больше ресурсов. – Vyktor

+0

попробуйте добавить модификаторы 'im' в конец вашего regexp (так что конец будет выглядеть так:' table>/im "' и дайте мне знать, что это сработало – Vyktor

ответ

-1

Угадайте вам это нужно:

<table class='price' id='comp' style='clear\:both;display\:none'>[\s\S]*?</table>

+1

AFAIK ':' не требуется экранирование в PCRE – Vyktor

+0

Нет, не работает. Strange? – user1197941

+0

Это не работает – Crontab

0

Используйте PHP Simple HTML DOM Parser вместо этого. Не перематывайте собственное регулярное выражение для извлечения данных с веб-страниц. Если вы абсолютно настроены на использование собственного регулярного выражения, попробуйте My Regex Tester (не мое - это просто его имя), чтобы легко отладить ваш шаблон. Кроме того, обратитесь к this Stack Overflow post по причинам, почему вы не должны делать то, что вы пытаетесь сделать.

+0

Я не могу использовать парсер DOM, поскольку я использую общий хостинг. Мое регулярное выражение для этого должно быть простым в любом случае. – user1197941

+0

@ user1197941 Почему общий хостинг не позволяет вам использовать связанный с классом? Это единственный PHP-файл, и его единственным требованием является PHP 5. – Crontab

Смежные вопросы