Как получить html-код узла DOMElement?
У меня есть этот html-код:
<html>
<head>
...
</head>
<body>
<div>
<div class="foo" data-type="bar">
SOMECONTENTWITHMORETAGS
</div>
</div>
</body>
Я уже могу получить элемент "foo" (но только его содержимое) с помощью этой функции:
private function get_html_from_node($node){
$html = '';
$children = $node->childNodes;
foreach ($children as $child) {
$tmp_doc = new DOMDocument();
$tmp_doc->appendChild($tmp_doc->importNode($child,true));
$html .= $tmp_doc->saveHTML();
}
return $html;
}
Но я хотел бы вернуть все теги html (включая его атрибуты) DOMElement. Как я могу это сделать?
Ответы
Ответ 1
Используйте необязательный аргумент для DOMDocument::saveHTML
: это говорит: "Вывести только этот элемент".
return $node->ownerDocument->saveHTML($node);
Обратите внимание, что аргумент доступен только из PHP 5.3.6. До этого вам нужно вместо этого использовать DOMDocument::saveXML
. Результаты могут несколько отличаться. Кроме того, если у вас уже есть ссылка на документ, вы можете просто сделать это:
$doc->saveHTML($node);
Ответ 2
PHP Простой HTML DOM Parser должен выполнять эту работу!