Получение содержимого div с PHP DOM - PullRequest
7 голосов
/ 20 июня 2011

Я просмотрел другие вопросы Stackoverflow по этой теме, и ни одно из представленных там решений, похоже, не работает для меня.

У меня есть HTML-страница (очищенная с помощью file_get_contents()) и в этом HTMLэто div с идентификатором «main» - мне нужно получить содержимое этого div с помощью PHP DOMDocument или чего-то подобного.В этой ситуации я не могу использовать парсер SimpleHTMLDom, который немного усложняет ситуацию.

Ответы [ 2 ]

6 голосов
/ 20 июня 2011

DOMDocument + вариант XPath:

$xml = new DOMDocument();
$xml->loadHtml($temp);
$xpath = new DOMXPath($xml);

$html = '';
foreach ($xpath->query('//div[@id="main"]/*') as $node)
{
    $html .= $xml->saveXML($node);
}

Если вы ищете innerHTML() (Справочный вопрос по PHP DOMDocument) - вместо innerXML(), как в этомответ - в этом ответе указан вариант, связанный с xpath .

Здесь подчеркнуто принятие с изменениями:

$html = '';
foreach ($xpath->query('//div[@id="main"]/node()') as $node)
                                          ######
{
    $html .= $xml->saveHTML($node);
                       ####
}
3 голосов
/ 20 июня 2011

Использование DOMDocument ...

$dom = new DOMDocument;

$dom->loadHTML($html);

$main = $dom->getElementById('main');

Чтобы получить сериализованный HTML ...

html = '';
foreach($main->childNodes as $node) {
    $html .= $dom->saveXML($node, LIBXML_NOEMPTYTAG);
}

Используйте saveHTML(), если ваша версия PHP поддерживает это.

...