致命错误:调用未定义的方法DOMDocument :: getElementsById()

时间:2014-05-30 19:36:01

标签: php domdocument

我正在解析一个外部html(http://www.amazon.com/Toshiba-Satellite-C55-A5245-15-6-Inch-Horizon/dp/B00D78PZE8/ref=lp_9277875011_1_1?s=pc&ie=UTF8&qid=1400886357&sr=1-1),其中我有一个这样的元素:

<span id="priceblock_ourprice" class="a-size-medium a-color-price">$429.99</span>

和一个带有以下代码的php:

$dom = new DOMDocument;

libxml_use_internal_errors(TRUE);
$dom->loadHTMLFile($url);
libxml_clear_errors();

$links = $dom->getElementsById('priceblock_ourprice');

foreach ($links as $link ) {
    echo "- ".$link->nodeValue."<br>";
}

但我收到以下错误:

Fatal error: Call to undefined method DOMDocument::getElementsById() 

任何人都可以告诉我我做错了什么?

谢谢!

2 个答案:

答案 0 :(得分:3)

getElementsById()不是DOMDocument的方法,您应该尝试getElementById()。我甚至不认为两个元素可以具有相同的ID,因此您无法获得基于id的集合(数组)。

答案 1 :(得分:1)

好的,所以我不太明白这一点,似乎Firefox中的Firebug向我显示了错误的ID,我使用下面的代码来获取不同跨度的ID,而右边的ID是:

$dom = new DOMDocument();

libxml_use_internal_errors(TRUE);
$dom->loadHTMLFile($url);
libxml_clear_errors();

$nodes = $dom->getElementsByTagName('span');

foreach($nodes as $node) {
echo $node->getAttribute('id'). '->'.$node->textContent.'<br>';
}

它返回了我正在寻找的字段的不同ID,我想我在某个时候有一些错误,真的很抱歉等你的时间。