【问题标题】:DomXPath SelectingDomXPath 选择
【发布时间】:2011-11-05 20:21:40
【问题描述】:

我在选择所需内容时遇到了 DomXPath 问题。我有一个类似的结构

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

我想要的是只选择“Something”而不是“Inside”。我知道如何像//div[@id='a'] 一样只选择“内部”或同时选择两者,然后调用$obj-&gt;nodeValue,但我找不到只选择“某物”的方法。有人可以帮我解决这个问题吗? 谢谢。

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

【问题讨论】:

  • 我发现它是 //div[@id='a']/child::text() 但我仍然找不到如何只选择数值。

标签: php html-parsing domxpath


【解决方案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

【讨论】:

  • 我也搜索了很多答案,但我找不到 xpath 方式,我也使用了正则表达式,所以我将您的答案标记为已接受。谢谢。
猜你喜欢
  • 1970-01-01
  • 2019-12-06
  • 2018-07-02
  • 1970-01-01
  • 1970-01-01
  • 2014-05-26
  • 1970-01-01
  • 2012-11-13
  • 1970-01-01
相关资源
最近更新 更多