簡體   English   中英

無法使PHP DOMXpath子串函數起作用

[英]Can't get PHP DOMXpath substring functions to work

使用以下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的DOMX路徑,還是我做錯了什么?

XPath substring-before()函數返回string而不是節點,並且您不應該使用DOMXPath::query()來執行不返回節點*的XPath表達式。 DOMXPath::evaluate()是這里使用的正確函數:

$xml = "<person><name>John-Doe</name></person>";
$doc = new DOMDocument();
$doc->loadXML($xml);
$xpath = new DOMXpath($doc);
$result = $xpath->evaluate("substring-before(/person/name/text(), '-Doe')");
print $result;

eval.in demo

輸出:

John

*)引自DOMXPath :: query > 返回值

任何不返回節點的表達式都將返回一個空的DOMNodeList

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM