1

特定のタグの html コードを取得したいと考えています。私は DoDocument がそれを可能にしていることを知っています。しかし、外部タグなしでコンテンツを抽出したい場合、どうすれば実現できますか?

例えば、

$html = '<div><span>Hello world!</span><br><p>some other text</p></div>';    
$doc = new DOMDocument;
$doc->loadHTML($html);
echo $doc->saveXML($doc->getElementsByTagName('div')->item(0));

これは出力されます、

<div>
    <span>Hello world!</span>
    <br>
    <p>some other text</p>
</div>

外側のdivタグなしで欲しい。ノード値を試しましたが、すべてのタグが削除されます。

$html = '<div><span>Hello world!</span><br><p>some other text</p></div>';    
$doc = new DOMDocument;
$doc->loadHTML($html);
$node = $doc->getElementsByTagName('div')->item(0);
echo $node->nodeValue;

何か案は?

4

1 に答える 1

4

では、PHPのinnerHTML実装についてはどうでしょうか。

<?php 
$html = '<div><span>Hello world!</span><br><p>some other text</p></div>';    
$doc = new DOMDocument;
$doc->loadHTML($html);
$node = $doc->getElementsByTagName('div')->item(0);
echo DOMinnerHTML($node);

function DOMinnerHTML($element) 
{ 
    $innerHTML = ""; 
    $children = $element->childNodes; 
    foreach ($children as $child) 
    { 
        $tmp_dom = new DOMDocument(); 
        $tmp_dom->appendChild($tmp_dom->importNode($child, true)); 
        $innerHTML.=trim($tmp_dom->saveHTML()); 
    } 
    return $innerHTML; 
} 
?> 
于 2012-08-24T09:47:45.603 に答える