Как сделать регистр strpos нечувствительным
Как изменить strpos, чтобы сделать его нечувствительным к регистру. Причина в том, что product->name
- это MadBike, а поисковый запрос - это байк, который не даст мне ссылку.
Моя главная проблема - скорость кода.
<?php
$xml = simplexml_load_file('test.xml');
$searchterm = "bike";
foreach ($xml->product as $product) {
if (strpos($product->name, $searchterm) !== false ) {
echo $product->link;
} }
?>
Ответы
Ответ 1
Вы ищете 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).
Ответ 2
http://www.php.net/manual/en/function.stripos.php
stripos() не чувствителен к регистру.
Ответ 3
'i' в stripos() означает нечувствительность к регистру
if(stripos($product->name, $searchterm) !== false){ //'i' case insensitive
echo "Match = ".$product->link."<br />;
}
Ответ 4
введите имя и $searchterm в нижнем регистре до $strpos.
$haystack = strtolower($product->name);
$needle = strtolower($searchterm);
if(strpos($haystack, $needle) !== false){
echo "Match = ".$product->link."<br />;
}