Как получить 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);