<div>
<a>abc</a>
xyz
</div>
Run Code Online (Sandbox Code Playgroud)
鉴于上面的HTML结构,$divElement->nodeValue当我想只获得'xyz'时,返回'abc xyz'.$divElement->getAttribute('value')是空的.
如何在不删除<a>元素的情况下获得'xyz' ?
只需遍历<div>并组合所有文本节点:
$dom=new DOMDocument;
$dom->loadHTML(<<<HTML
<div>
<a>abc</a>
xyz
</div>
HTML
);
$div=$dom->getElementsByTagName("div")->item(0);
var_dump($div->childNodes->length);//just to debug
$txt="";
foreach(range(0,$div->childNodes->length-1) as $idx)
{
if($div->childNodes->item($idx)->nodeType==3)
{
$txt.=$div->childNodes->item($idx)->nodeValue;
}
}
var_dump($txt);
Run Code Online (Sandbox Code Playgroud)
nodeType==3表示文本节点.相应的nodeName是#text.