私はこの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タグ(その属性を含む)を返したいのですが。どうすればできますか?
オプションの引数を DOMDocument::saveHTML
に使用します。これは、「この要素のみを出力する」と言います。
return $node->ownerDocument->saveHTML($node);
引数はPHP 5.3.6からのみ利用可能です。その前に、代わりに DOMDocument::saveXML
を使用する必要があります。結果は少し異なる場合があります。また、ドキュメントへの参照がすでにある場合は、次のようにすることができます。
$doc->saveHTML($node);