2011-07-22 75 views
37

如何更改strpos使其不區分大小寫。原因是如果product->nameMadBike和搜索項是自行車它不會迴應我的鏈接。 我主要關心的是代碼的速度。如何使strpos不區分大小寫

<?php 
$xml = simplexml_load_file('test.xml'); 
$searchterm = "bike"; 
foreach ($xml->product as $product) { 
if (strpos($product->name, $searchterm) !== false) { 
echo $product->link; 
} } 
?> 

回答

64

您正在尋找stripos()

如果無法提供給你,然後只需撥打兩個字符串strtolower()第一。

編輯

stripos()將無法​​正常工作,當你想找到與變音符號SUBSTR。

例如:

stripos("Leży Jerzy na wieży i nie wierzy, że na wieży leży dużo JEŻY","jeży");返回false,但應該INT(68)。

+0

跟strpos一樣快嗎? – EnexoOnoma

+3

不,但它比首先使用strtolower()要快一些;平均而言,它('stripos')似乎比「strpos」長約2.5倍。再說一次,你仍然可以每秒執行一百萬次('stripos'),所以我不會擔心這一點 - 不成熟的優化是萬惡之源。 – Dereleased

+0

理論上,沒有解決辦法,因爲要進行更多的比較。但這裏有一些數據:http://lzone.de/articles/php-string-search.htm – Turnsole

1

'我'stripos函數()指不區分大小寫

if(stripos($product->name, $searchterm) !== false){ //'i' case insensitive 
     echo "Match = ".$product->link."<br />; 
    } 
0

使之前$ strpos小寫兩個名字& $搜索關鍵詞。

$haystack = strtolower($product->name); 
$needle = strtolower($searchterm); 

if(strpos($haystack, $needle) !== false){ 
    echo "Match = ".$product->link."<br />; 
}