2013-02-28 91 views
0

我正在通過HTML搜索「myfunc」。但是,大寫字母不確定。不幸的是,PHP使用XPath 1,因此所有搜索都區分大小寫。xpath中不區分大小寫的搜索1

如何更新以下代碼來搜索「myfunc」,「MyFunc」,「myFunc」等?

foreach($domxpath->query('//*[@*[contains(.,"myfunc")]]') as $node) { 

以下不起作用。我也沒有試圖執行a translate() work-around

foreach($domxpath->query('//*[@*[matches(.,"[mM][yY][fF][uU][nN][cC]")]]') as $node) { 

如果正則表達式是不可能的,我怎樣可以搜索字符串數組上(即 「MYFUNC」, 「MYFUNC」, 「myFunc的」,等等)?

回答

3

比賽是XPath的2功能,在XPath的1你必須使用轉換將其轉換爲一個標準化的情況下:

//*[@*[contains(translate(., "MYFUNC", "myfunc"),"myfunc")]] 
0

使用case-insentitive option火柴:

foreach($domxpath->query('//*[@*[matches(.,"myfunc","i")]]') as $node) { 

比較值的序列,只是用=做一個節點集比較:

(. = ("myfunc", "MyFunc", "myFunc")) 

將返回true,如果任何左順序任何東西都以正確的順序。從XPath spec

如果要比較的兩個對象是節點集,那麼當且僅當有一個節點的比較將是真第一節點集,並且在一個節點的第二節點,設定成對兩個節點的字符串值進行比較的結果是正確的。