gpt4 book ai didi

PHP XPath substring-after 只返回第一个结果

转载 作者:行者123 更新时间:2023-12-03 16:12:38 26 4
gpt4 key购买 nike

我正在做一些 HTML 抓取,并且在这个查询中遇到了麻烦。我正在尝试从以下 HTML 页面结构返回一组值:

<div id="product-grid">
<ul>
<li><div class="price">Cash Price: $20.00</div></li>
<li><div class="price">Cash Price: $30.00</div></li>
<li><div class="price">Cash Price: $40.00</div></li>
</ul>
</div>

我正在尝试获取 "$20.00"价格在列表中返回。如果我使用以下 XPath:
id('product-grid')//p[@class="price"] 

我得到所有“现金价格:40.00 美元”的结果列表。如果我尝试以下查询:
substring-after(id('product-grid')//p[@class="price"] , "Price: ")

我得到了正确的输出,但只得到了第一个结果。有谁知道我怎样才能得到所有结果?

我在运行 PHP5.3.3libxml 2.7.8XPath .我按如下方式调用 xpath:
$xpath = new DOMXPath( $html ); 
$resultset= $xpath->query($query);

我一直在疯狂地谷歌搜索,试图找出为什么会发生这种情况!请帮忙!

最佳答案

抱歉,但我认为这不可能一步完成。据我所知,XPath 1.0 不支持 XPath 路径末尾的函数调用。答案here表示相同。

此外,您不得使用 id('product-grid')作为第一个路径部分,因为 id 在根元素上,不需要特别选择。如果您的示例 XML 只是较大 XML 文档的一个片段,则 id()虽然可能是必要的。

以下按预期工作:

$xml = new DOMDocument();
$xml->loadXML('<div id="product-grid">
<ul>
<li><div class="price">Cash Price: $20.00</div></li>
<li><div class="price">Cash Price: $30.00</div></li>
<li><div class="price">Cash Price: $40.00</div></li>
</ul>
</div>');
$xpath = new DOMXPath($xml);
foreach ($xpath->query('//div[@class="price"]') as $n) {
var_dump(substr($n->nodeValue, strpos($n->nodeValue, '$')));
}

关于PHP XPath substring-after 只返回第一个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7460800/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com