[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: preg_match регистронезависимый поиск php-5 и 7
xmeg.ru
В Apach 2.2.25, php-5.6.9 работал регистронезависимый поиск с ключом i
$pattern = "/$zapros1/i";//

echo preg_match($pattern, $homepage);


Обновился до Apach 2.4.23, php-7.0.11
ключ i не дает какого либо результата, ошибок в логах по этому ключу i нет

как заставить его производить регистронезависимый поиск ?
N0ob
А содержание $pattern вы смотрели? Возможно значение $zapros просто не подставляется в $pattern
xmeg.ru
Вариант 1. на Apach 2.4.23, php-7.0.11

$homepage = "Блок питания Упор плиткореза принтер";

$zapros1 = "упор";

$pattern = "/$zapros1/i";//

echo preg_match($pattern, $homepage);

выдает 0, то есть ни найдено



Вариант 2)

$homepage = "Блок питания Упор плиткореза принтер";

$zapros1 = "Упор";

$pattern = "/$zapros1/i";//

echo preg_match($pattern, $homepage);

выдает 1, то есть найдено совпадение

N0ob
Так ты поставил ведь модификатор i. В первом случае у тебя в переменной $zapros1 слово начинается с маленькой буквы то бишь нижний регистр а в тексте с большой. Вот оно и не находит
xmeg.ru
так i и поставлено чтоб поиск независил от регистра


провел интересный опыт


$homepage = "Mary Had A Little";

$zapros1 = "Had";

$pattern = "/$zapros1/i";//

echo preg_match($pattern, $homepage);// дает 1 то есть найдено






$homepage = "Mary Had A Little";

$zapros1 = "had";

$pattern = "/$zapros1/i";//

echo preg_match($pattern, $homepage);// дает 1 то есть найдено







$homepage = "Mary Had A Little Lamb and She LOVED It So";

echo strtolower($homepage);//mary had a little lamb and she loved it so

echo "<br/><br/>";

echo strtoupper($homepage);//MARY HAD A LITTLE LAMB AND SHE LOVED IT SO


пришел к выводу что функция корректно отрабатывает английские буквы, с русскими буквами при выполнении ничего не происходит

возможно нужно включать что-то в настройках php
T1grOK
Цитата (xmeg.ru @ 10.10.2016 - 06:48)
пришел к выводу что функция корректно отрабатывает английские буквы, с русскими буквами при выполнении ничего не происходит

Или просто использовать модификатор u

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
xmeg.ru
Попробовал, выдал ошибку в логах

PHP Warning: preg_match(): Compilation failed: invalid UTF-8 string at offset 0 in

кодировка по умолчанию windows-1251
xmeg.ru
странно если выставить charset=UTF-8
работает корректно


$homepage = "Упор";

$zapros1 = "Упор";

$pattern = "/$zapros1/iu";//

echo preg_match($pattern, $homepage);// дает 1 тоесть найдено






$homepage = "Упор";

$zapros1 = "упор";

$pattern = "/$zapros1/iu";//

echo preg_match($pattern, $homepage);// дает 1 тоесть найдено
xmeg.ru
добавил конвертер кодировки и оно заработало

$homepage = "Упор";

$zapros1 = "Упор";


$homepage = iconv("windows-1251", "utf-8", $homepage);
$zapros1 = iconv("windows-1251", "utf-8", $zapros1);


$pattern = "/$zapros1/iu";//

echo preg_match($pattern, $homepage);// дает 1 тоесть найдено








$homepage = "Упор";

$zapros1 = "упор";


$homepage = iconv("windows-1251", "utf-8", $homepage);
$zapros1 = iconv("windows-1251", "utf-8", $zapros1);


$pattern = "/$zapros1/iu";//

echo preg_match($pattern, $homepage);// дает 1 тоесть найдено


dry.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.