Php 域XPath选择

Php 域XPath选择,php,html-parsing,domxpath,Php,Html Parsing,Domxpath,在选择所需内容时,我对DomXPath有问题。我有一个这样的结构 <div id="a"> Something <nobr> Inside </nobr> </div> 某物 在…内 我想要的是只选择“某物”而不是“内部”。我知道如何只选择'Inside'或同时选择两者,比如//div[@id='a'],然后调用$obj->nodeValue,但我找不到只选择'Something'的方法。谁能帮我一下吗? 谢谢 编辑:如果某个内容

在选择所需内容时,我对DomXPath有问题。我有一个这样的结构

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

某物
在…内
我想要的是只选择“某物”而不是“内部”。我知道如何只选择'Inside'或同时选择两者,比如
//div[@id='a']
,然后调用
$obj->nodeValue
,但我找不到只选择'Something'的方法。谁能帮我一下吗? 谢谢


编辑:如果某个内容被更改为123456,您还可以给我一个提示,如何只选择数值作为123456作为奖励吗?

在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;

在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;

我发现它是//div[@id='a']/child::text(),但我仍然找不到如何只选择数值。我发现它是//div[@id='a']/child::text(),但我仍然找不到如何只选择数值。我也搜索了很多答案,但找不到xpath方法,我也使用了regex,所以我将您的答案标记为已接受。谢谢。我也搜索了很多答案,但找不到xpath方法,我也使用了正则表达式,所以我将您的答案标记为已接受。谢谢