1

我正在尝试使用 xpath 从以下 html 中获取文本“7 天前”。
使用 xpath//div[contains(@class,'fnt20')]我可以获取 div 中的文本,但我想获取跨度之后的确切文本,即。只有文字“7天前”。
html如下:

<div class="fnt20">
   <span class="accessibilityOnly">Duration:</span>
        7 days ago
</div>

有人可以建议吗?

4

2 回答 2

0

更新:起来!我看到这个问题没有被标记php。我应该明确我正在使用 PHP


尽管它有点脆弱,但以下代码将起作用:

$html = <<<EOF
<div class="fnt20">
   <span class="accessibilityOnly">Duration:</span>
        7 days ago 
</div>
EOF;

$doc = new DOMDocument();
$doc->loadHTML($html);
$selector = new DOMXPath($doc);

echo trim($selector->query('//div[@class="fnt20"]/text()')
  ->item(1)
  ->nodeValue);

注意: 的用法trim()并不令人满意。但它有效。我将研究如何避免这种情况,以获得xpath 解决方案

于 2013-06-05T12:07:32.560 回答
0

请尝试//div[contains(@class,'fnt20')]/text()[last()]得到结果' 7 days ago'

于 2013-06-05T11:59:56.943 回答