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

オプションの引数 to を使用します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 に答える