2012-10-16 8 views
16

私は、このhtmlコード持っている:私はすでにこの機能を「foo」という要素(だけでそのコンテンツ)を取得することができますDOMElementノードのhtmlコードを取得するには?

<html> 
    <head> 
    ... 
    </head> 
<body> 
    <div> 
    <div class="foo" data-type="bar"> 
     SOMECONTENTWITHMORETAGS 
    </div> 
    </div> 
</body> 

を:

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のタグ(その属性を含む)。私はそれをどのようにすることができますか?

+0

'html_from_node'' class = "foo" 'を取得しようとしているのであれば正しくありません。これを行うのは簡単で簡単な方法です。 –

+0

これは役に立ちますか? http://stackoverflow.com/questions/6366351/getting-dom-elements-by-class-name – EricG

+0

@webbandit私は良い方法があることを知っています。見せてください! – Xaver

答えて

37

DOMDocument::saveHTMLのオプション引数を使用してください:これは "この要素のみを出力する"と表示されます。

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

引数はPHP 5.3.6からのみ利用可能です。その前に、代わりにDOMDocument::saveXMLを使用する必要があります。結果は若干異なる場合があります。あなたは既に文書への参照を持っている場合にも、あなたはちょうどこの操作を行うことができます。

$doc->saveHTML($node); 
+0

これは実際に私が必要なものですが、バージョン3.4で動作するはずのWordPressプラグイン用です。このバージョンにはPHP 5.2.4が必要です。 – Xaver

+0

@revaxartsそして、 'saveXML'を使います。出力はほとんど違いはありません... – lonesomeday

+0

私は完全な例を教えてくれますか? DOMDocument :: saveXML($ node) 'が' $ node-> saveXML($ node) 'と同じ働きをしていない – Xaver

関連する問題