无法使用PHP中的DOMDocument类获取nodeValue

时间:2010-04-24 05:29:47

标签: php dom parsing html-parsing

我在PHP中使用DOMDocument类解析HTML文档,我想得到一个div元素的nodeValue,但是它给了我null,

<div id="summary">
   Hi, my name is <span>ABC</span>
   <br/> 
   address is here at stackoverflow...
   <span>....
   ....
</div>

想要获取div中的值,以及我写的代码wass

$div_node=$dom->getElementById("summary");
$node_value=$div_node->nodeValue;

但它给了我一个空值。

2 个答案:

答案 0 :(得分:2)

ID未在文档中注册,因此无法查询。一种选择是通过HTML明确声明每个元素的哪个属性是其id,另一个选项是针对DTD解析文档,第三个是放弃尝试使用getElementById并使用XPath。

对于后者,你会使用类似的东西(关键点是XPath查询):

$xpath     = new DOMXPath($dom);
$summaries = $xpath->query('//div[@id="summary"]');
$summary   = 'unknown';
if ($summaries->length > 0) {
    $summary = $summaries->item(0)->nodeValue;
}

答案 1 :(得分:0)

DOMDocument类需要有效的HTML,您的div标签未关闭。当它返回null时,意味着它找不到该元素。