DomXPath选择

时间:2011-11-05 20:21:40

标签: php html-parsing domxpath

我对DomXPath有一个问题,就是选择我需要的东西。我有一个像

这样的结构
<div id="a">
  Something
    <nobr> Inside </nobr>
</div>

我想要的只是选择'Something'而不是'Inside'。我知道如何在//div[@id='a']之内同时选择“内部”或两者,然后调用$obj->nodeValue,但我找不到只选择“Something”的方法。有人可以帮我这个吗? 感谢。

编辑:如果某些内容已更改为Something 123456,您还可以提示我如何仅选择数字值123456作为奖励吗?

1 个答案:

答案 0 :(得分: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;

Demo