39

我有这个 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 标签(包括它的属性)。我怎么能这样做?

4

2 回答 2

87

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

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

请注意,该参数仅适用于 PHP 5.3.6。在此之前,您需要改为使用DOMDocument::saveXML。结果可能略有不同。此外,如果您已经参考了该文档,则可以这样做:

$doc->saveHTML($node);
于 2012-10-16T07:51:57.893 回答
-10

PHP Simple HTML DOM Parser应该可以胜任!

于 2012-10-16T07:52:34.603 回答