57

如何更改 strpos 以使其不区分大小写。原因是如果product->nameMadBike并且搜索词是自行车,它不会回显我的链接。我主要关心的是代码的速度。

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

4 回答 4

118

您正在寻找stripos()

如果这对您不可用,那么只需strtolower()先调用两个字符串。

编辑

stripos()如果您想查找带有变音符号的子字符串,则无法使用。

例如:

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)

于 2011-07-22T19:58:05.357 回答
13

http://www.php.net/manual/en/function.stripos.php

stripos() 不区分大小写。

于 2011-07-22T19:58:50.867 回答
1

stripos()的 'i'表示不区分大小写

if(stripos($product->name, $searchterm) !== false){ //'i' case insensitive
        echo "Match = ".$product->link."<br />;
    }
于 2013-03-28T22:44:42.800 回答
1

在 $strpos 之前将 name 和 $searchterm 都设为小写。

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

if(strpos($haystack, $needle) !== false){  
    echo "Match = ".$product->link."<br />;
}
于 2016-01-08T13:44:52.073 回答