2009-06-16 16 views
3

PHPのDOM関数を使用して、DOMノードのコンテンツを文字列に変換するにはどうすればよいですか?ノードのXMLコンテンツを文字列として取得する方法は?

<foo> 
    Blah blah <bar baz="1">bah</bar> blah blah 
</foo> 

現在のコンテキスト・ノードとしてfooを考えると、どのように文字列として'Blah blah <bar baz="1">bah</bar> blah blah'を得るのですか?$node->textContentまたは$node->nodeValueを使用すると、<bar baz="1">ビットではなく、テキストノードが返されます。

基本的には、JavaScriptのinnerHTMLプロパティの同等...

答えて

5

あなたは<foo>ノードから新しいのDOMDocumentを作成し、XMLまたはHTMLとしてそれを解析することができます

function getInnerHTML($node) { 
    $tmpDoc = new DOMDocument('1.0'); 
    $block = $tmpDoc->importNode($node->cloneNode(true),true); 
    $tmpDoc->appendChild($block); 
    $outer = $tmpDoc->saveHTML(); 
    //this will remove the outer tags 
    return substr($outer,strpos($outer,'>')+1,-(strlen($node->nodeName)+4)); 
} 
+0

は秒で、それを私にビート。代わりにSimpleXMLの方法を公開しましたが、これはややこしいことです。 – Tomalak

関連する問題