1

我在选择所需内容时遇到了 DomXPath 问题。我有一个像

<div id="a">
  Something
    <nobr> Inside </nobr>
</div>

我想要的是只选择“某物”而不是“内部”。我知道如何只选择“内部”或同时选择它们,//div[@id='a']然后调用$obj->nodeValue,但我找不到只选择“某物”的方法。谁能帮我解决这个问题?谢谢。

编辑:如果Something 更改为Something 123456,您能否给我一个提示,如何仅选择数值作为123456 作为奖励?

4

1 回答 1

1

在 xpath 中定位文本节点内的数字是相当繁重的。相反,您可以在 PHP 中使用正则表达式来解析 textnode 的文本以获取值:

$doc = new DomDocument;
$doc->loadXML($xml);
$xpath = new DOMXPath($doc);
$text = $xpath->query("/div[@id='a']/child::text()")->item(0)->nodeValue;
$r = preg_match('~\d+~', $text, $matches);
list($number) = $matches;

演示

于 2011-11-05T21:31:58.983 回答