从DOM-> getElementById中检索没有元素ID的内容

时间:2019-09-18 11:05:29

标签: php html domdocument

使用

$body = $dom->getElementById('content');

输出如下:

<div id=content> 
  <div>
    <p>some text</p>
  </div>
</div>

我需要删除<div id=content></div>部分。 由于我只需要内部部分,所以不包含具有id内容的div

所需结果:

<div>
   <p>some text</p>
</div>

我当前的代码:

$url = 'myfile.html';
$file = file_get_contents($url);
$dom = new domDocument;
$dom->loadHTML($file);
//$body = $dom->getElementsByTagName('body')->item(0);
$body = $dom->getElementById('nbscontent');
$stringbody = $dom->saveHTML($body);
echo $stringbody;

1 个答案:

答案 0 :(得分:2)

getElementById返回一个DOMElement,其属性为childNodes,该属性为DOMNodeList。您可以遍历所有子项,然后再获取innerHTML

$str = "<div id='test'><p>inside</p></div>";

$dom = new DOMDocument();
$dom->loadHTML($str);    
$body = $dom->getElementById('test');

$innerHTML = '';

foreach ($body->childNodes as $child) 
{ 
    $innerHTML .= $body->ownerDocument->saveHTML($child);
}

echo $innerHTML; // <p>inside</p>

实时示例

Repl

相关问题