【发布时间】:2015-12-03 23:06:50
【问题描述】:
使用以下 PHP 代码示例:
$xml = "<person><name>John-Doe</name></person>";
$doc = new DOMDocument("1.0", "ISO-8859-15");
$xpath = new DOMXpath($doc);
$nodelist = $xpath->query("substring-before(/person/name/text(), '-Doe')");
print "Found " . $nodelist->length . " results.";
我得到了输出:
找到 0 个结果
但是当我将相同的 XML 和 xpath 查询放入在线 Xpath 测试仪时,我得到了预期的结果,即“John”
我似乎也无法使用 substring() 和 substring-after() 获得任何结果。是 PHP 的 DOMXpath 出了问题,还是我做错了什么?
【问题讨论】:
-
PHP 的 DOMXPath 说它是 "Supports XPath 1.0",但
substring-before是在 1.0.4.2 中添加的,因此它可能不受支持。无论如何,一旦您检索到person/name文本,PHP 就可以轻松完成这种事情;为什么要费心尝试在 XPath 中做呢?