gpt4 book ai didi

php - Xpath 选择文本

转载 作者:行者123 更新时间:2023-11-28 03:26:45 25 4
gpt4 key购买 nike

我一直在玩 xpath,当我选择段落时我可以让它工作,但是这个文本似乎不起作用。

这是html

<span id="favorite_count" style="display: block;">
<span style="cursor:help; border-bottom: 1px dotted black;" title="Active members who have made you their favorite. This number may change as new members join, or close their accounts.">My total number of <span class="favorites">:</span>
</span>
19458
</span>

我正在尝试选择 19458

这是我的 xpath 代码

$favorites   = $data->xpath( '//span[@id="favorite_count"]/text()' );

注意:

我知道这与上面的这一行有关,因为当我使用

$favorites   = $data->xpath( '//span[@id="favorite_count"]/span' );

我得到的结果是我的总数

我也无法更改 HTML,因为它来 self 无权修改的页面。

最佳答案

您正在使用 SimpleXML 库。它不能使用它的 SimpleXMLElement::xpath() 方法选择文本节点。

要使其正常工作,您需要扩展 SimpleXMLElement 并即时采用结果。在它的姊妹库 DOM 的帮助下,这很容易实现。

示例代码:

echo (new DOMXpath(
dom_import_simplexml(
simplexml_load_string($html)
)->ownerDocument
))->evaluate('normalize-space(//span[@id="favorite_count"]/text()[last()])');

程序输出:

19458

演示:https://eval.in/82605

在您非常具体的情况下,您还可以直接使用 SimpleXML 执行以下操作:

echo trim($xml->xpath('//span[@id="favorite_count"]')[0]);

这是有效的,因为内部 <span> 确实隐藏了实际的节点值,您它只返回空格、行分隔符和数字 19458。

相关问题:

关于php - Xpath 选择文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20764908/

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