如何获取DOMElement节点的html代码?

2022-08-30 12:14:53

我有这个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;
}

但是我想返回DOMElement的所有html标签(包括其属性)。我该怎么做?


答案 1

使用 DOMDocument::saveHTML 的可选参数:这表示“仅输出此元素”。

return $node->ownerDocument->saveHTML($node);

请注意,该参数仅在 PHP 5.3.6 中可用。在此之前,您需要改用 DOMDocument::saveXML。结果可能略有不同。此外,如果您已经对文档有引用,则可以执行以下操作:

$doc->saveHTML($node);

答案 2

PHP Simple HTML DOM Parser应该可以完成这项工作!


推荐