2014-02-07 177 views
0

以下檢查中的XPath & PHP代碼,以查看是否在任何的XML文件中的「名稱」元素的文本包含字符串「臺」(見代碼的第二行)。如果Xpath搜索字符串是「Desk」(帶有大寫D),它將檢索第一個XML名稱元素中的文本,該元素是「Desktop」。但由於Xpath搜索字符串是「桌子」(小寫字母d),因此不會檢索到任何內容。的XPath/XML小寫查詢方法

有沒有辦法來使這個代碼從XML文件的名稱元素中的XPath搜索字符串「桌子」(以小寫d)可以檢索「桌面」(以大寫字母d)?或者有沒有辦法讓查詢不區分大小寫?

這裏是XPath和PHP代碼:

$xmldoc = simplexml_load_file("products.xml"); 
$query = $xmldoc->xpath('/products/product[contains(name,"desk")]'); 
foreach($query as $Products) { 
echo $Products->name . " "; 
echo $Products->price . "<br>"; 
} 

下面是XML文件(名爲product.xml):

<products> 
    <product type="Electronics"> 
     <name>Desktop</name> 
     <price>499.99</price> 
     <store>Best Buy</store> 
    </product> 
    <product type="Hardware"> 
     <name>Hand Saw</name> 
     <price>99.99</price> 
     <store>Lowes</store> 
    </product> 
</products> 

謝謝!

+0

可能的重複[在php中不區分大小寫的xpath搜索](http://stackoverflow.com/questions/3238989/case-insensitive-xpath-searching-in-php) –

回答

0

如果使用

$query = $xmldoc->xpath('/products/product[contains(translate(name, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz"),"desk")]'); 

你有一個區分大小寫的比較,至少在文字的翻譯呼叫轉換。

+0

謝謝,它的工作! –

+0

http://fsockopen.com/php-programming/your-final-stop-for-php-xpath-case-insensitive –

0

試試這個..

$query = $xmldoc->xpath('/products/product[contains(name,"_esk")]'); 
+0

謝謝,它的工作! –