Как получить часть HTML DOM страницы с помощью PHP? - PullRequest
0 голосов
/ 19 октября 2011

Я собираю данные из опубликованной электронной таблицы Google, и все, что мне нужно, - это информация внутри содержимого div (<div id="content">...</div>)

Я знаю, что контент начинается с <div id="content"> и заканчиваетсякак </div><div id="footer">

Какой самый лучший / самый эффективный способ получить часть DOM, которая находится внутри?Я думал о регулярном выражении (см. Мой пример ниже), но оно не работает, и я не уверен, что оно настолько эффективно ...

header('Content-type: text/plain');

$foo = file_get_contents('https://docs.google.com/spreadsheet/pub?key=0Ahuij-1M3dgvdG8waTB0UWJDT3NsUEdqNVJTWXJNaFE&single=true&gid=0&output=html&ndplr=1');

$start = '<div id="content">';
$end = '<div id="footer">';

$foo = preg_replace("#$start(.*?)$end#",'$1',$foo);

echo $foo;

ОБНОВЛЕНИЕ

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

Ответы [ 3 ]

1 голос
/ 19 октября 2011

Попробуйте изменить регулярное выражение на $foo = preg_replace("#$start(.*?)$end#s",'$1',$foo);, модификатор s изменит ., чтобы включить новые строки.На самом деле ваше регулярное выражение должно соответствовать всему содержимому между тегами в одной строке.

Если ваша HTML-страница более сложна, чем, то, возможно, регулярное выражение не будет сокращать ее, и вам нужно будет посмотреть в парсер, как DOMDocument или Простой HTML DOM

0 голосов
/ 19 октября 2011

Не используйте регулярные выражения, это может привести к сбою. Использовать встроенный в PHP анализ DOM: http://php.net/manual/en/class.domdocument.php

Вы можете легко просматривать и анализировать соответствующий контент.

0 голосов
/ 19 октября 2011

если у вас много дел, я бы порекомендовал вам взглянуть на http://simplehtmldom.sourceforge.net действительно хорошо для такого рода вещей.

...