У меня есть этот 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. Как я могу это сделать?
Используйте необязательный аргумент для DOMDocument::saveHTML
: это говорит: «Вывести только этот элемент».
return $node->ownerDocument->saveHTML($node);
Обратите внимание, что аргумент доступен только из PHP 5.3.6. До этого вам нужно вместо этого использовать DOMDocument::saveXML
. Результаты могут несколько отличаться. Кроме того, если у вас уже есть ссылка на документ, вы можете просто сделать это:
$doc->saveHTML($node);
PHP Простой HTML DOM Parser должен выполнять эту работу!