我有以下内容打印100
- 这是正确的 - 但是,我必须使用print_r()
这显然是错误的
$dom = new DOMDocument();
$dom->loadHTML('<span class="foo" id="bar" itemprop="price">100</span>');
$xpath = new DOMXPath($dom);
$results = $xpath->evaluate('number(//*[@itemprop="price"])');
print_r($results);`
那么,我应该如何获得100的单个结果呢?我已经尝试了$results[0]
但没有工作。
我确定这很简单但是打我!
答案 0 :(得分:1)
在结果上使用->item()
方法来访问XPath查询返回的DOM节点。另外,当您想要运行XPath查询时,您应该使用query()
方法。我从来没有真正理解使用evaluate()
的目的。
$xpath = new DOMXPath($dom);
$results = $xpath->query('//*[@itemprop="price"]');
echo $results->item(0)->nodeValue;
DOMXPath->query() 会返回DOMNodeList
的实例,您可以使用foreach()
进行迭代,或使用->item()
方法访问特定的结果项。它唯一的参数是返回列表中从0开始的索引。