Перепробовал все варианты не могу найти решение.Есть строчка "Volvo XC40 (2018) интерьер" собственно нужно найти слово "интерьер" но это слово встречается и верхнем регистре и в нижнем (интерьер, Интерьер, ИНТЕРЬЕР); Если слова есть то true нет false.
Вам подойдёт регулярное выражение "/интерьер/ui"
В коде это будет выглядеть примерно вот так:
$string = 'Volvo XC40 (2018) иНтЕрьЕр';
//Следующая строка вернёт true или false независимо от регистра
$result = preg_match('/интерьер/ui', $string);
Вся магия во флагах которые мы добавляем в конец регулярки:
u - отвечает за восприятие юникода
i - делает регулярное выражение нечуствительным к регистру.
Так же, не забывайте про наличие якорей:
^ - начало строки
$ - конец строки
В вашем случае, если известно что искомое значение будет строго в конце строки, можно воспользоваться якорем $
А вообще рекомендую отличный ресурс для тестирования регулярок https://regex101.com/
Должно сработать что-то вроде
(И|и)(Н|н)(Т|т)(Е|е)(Р|р)(Ь|ь)(Е|е)(Р|р)
Но уверен есть более лаконичное решение
выбирайте и старайтесь всегда тестить варианты
$str = 'Volvo XC40 (2018) интерЬер';
$cycle = 100000;
function var1($str)
{
$r = 0;
if(mb_strstr($str, 'интерьер') || mb_strstr($str, 'Интерьер') || mb_strstr($str, 'ИНТЕРЬЕР'))
{
$r = 1;
}
return($r);
}
function var2($str)
{
$r = 0;
if(mb_stristr($str, 'интерьер'))
{
$r = 1;
}
return($r);
}
function var3($str)
{
$r = 0;
if(preg_match('/интерьер/ui', $str))
{
$r = 1;
}
return($r);
}
function var4($str)
{
$r = 0;
$str = mb_strtolower($str);
if(mb_strstr($str, 'интерьер'))
{
$r = 1;
}
return($r);
}
function var5($str)
{
$r = 0;
$str = strtr($str,['И'=>'и','Н'=>'н','Т'=>'т','Е'=>'е','Р'=>'р','Ь'=>'ь',]);
if(mb_strstr($str, 'интерьер'))
{
$r = 1;
}
return($r);
}
function var6($str)
{
$r = 0;
//$str = strtr($str,['И'=>'и','Н'=>'н','Т'=>'т','Е'=>'е','Р'=>'р','Ь'=>'ь',]);
if(strtr($str,['интерьер'=>'','Интерьер'=>'','ИНТЕРЬЕР'=>'',]))
{
$r = 1;//echo $str;die;
}
return($r);
}
$start = microtime(true);//запускаем таймер
for($i=0;$i<$cycle;++$i)
{
if(var1($str))
{
//echo 'true';
}
}
echo 'var1 '.(microtime(true) - $start).PHP_EOL;
$start = microtime(true);//запускаем таймер
for($i=0;$i<$cycle;++$i)
{
if(var2($str))
{
//echo 'true';
}
}
echo 'var2 '.(microtime(true) - $start).PHP_EOL;
$start = microtime(true);//запускаем таймер
for($i=0;$i<$cycle;++$i)
{
if(var3($str))
{
//echo 'true';
}
}
echo 'var3 '.(microtime(true) - $start).PHP_EOL;
$start = microtime(true);//запускаем таймер
for($i=0;$i<$cycle;++$i)
{
if(var4($str))
{
//echo 'true';
}
}
echo 'var4 '.(microtime(true) - $start).PHP_EOL;
$start = microtime(true);//запускаем таймер
for($i=0;$i<$cycle;++$i)
{
if(var5($str))
{
//echo 'true';
}
}
echo 'var5 '.(microtime(true) - $start).PHP_EOL;
$start = microtime(true);//запускаем таймер
for($i=0;$i<$cycle;++$i)
{
if(var6($str))
{
//echo 'true';
}
}
echo 'var6 '.(microtime(true) - $start).PHP_EOL;
Виртуальный выделенный сервер (VDS) становится отличным выбором
У меня есть несколько PHP кодов с PDO транзакциями, измняющими одинаковые поля в базе данныхКоды могут запускаться в разные моменты времени
Настроил скрипт отправки формы, письмо доходит, но без данных формыФорма:
Пытаюсь запустить пример создания блокнота из туториалов Qt (https://docqt