Подтвердить что ты не робот

Как сделать регистр 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;
} }
?>
4b9b3361

Ответ 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).

Ответ 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 />;
}