2009-05-02 15 views
0

使用下面的xpath查詢對屬性應用字符串函數(例如「規範化空間」)的正確語法是什麼?php xpath - 屬性上的字符串函數

查詢:「./@media」

我見過這樣的例子在其他地方,但如果我嘗試使用PHP的XPath的庫它,它沒有返回值...

+0

我完整的代碼:$ xpath->查詢( 「./ [正常化空間(@」 $ {。$標記 「attributeitem」} $ {$ tag。「queryitem」}。「)]」) - > item(0)) – EddyR 2009-05-02 09:17:14

+0

什麼類型是$ tag?後續代碼var_dump($標籤);可以告訴你。 – VolkerK 2009-05-02 09:30:51

回答

1

一個DOMXPath對象上的使用query()總是結果中的節點集(包裝在一個DOMNodeList對象),從未在一個字符串。

您無法提取XPath函數的結果。你必須查詢你想要處理的節點,並用PHP處理它們。

+0

偉大 - 非常高效的編碼!我正在慢慢學習php的舊xpath庫的陷阱:)這裏希望他們很快就會移動到2.0! – EddyR 2009-05-02 09:36:23

0
./[normalize-space(@media) 

請試試這個。

+0

是的我試過了,它返回這個錯誤 - 可捕捉的致命錯誤:類DOMElement的對象無法轉換爲字符串 – EddyR 2009-05-02 09:13:11

0

這個怎麼樣?

normalize-space(./@media) 

您也可以嘗試:

normalize-space(string(./@media)) 

,但我不認爲這是neccessary這裏。

+0

我仍然得到相同的錯誤 – EddyR 2009-05-02 09:23:16

5

使用evaluate()而不是query()。它將返回一個輸入結果。它自PHP 5.1起可用。

$doc = new DOMDocument(); 
$xpath = new DOMXpath($doc); 
$q = $xpath->evaluate('"test"'); 
var_dump($q); 

輸出:

string(4) "test"