Получение содержимого 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 поддерживает его.