Получение содержимого div с помощью DOM PHP

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

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

2 ответов


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);
                       ####
}

используя 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 поддерживает его.