X

PCRE и регистронезависимый русский поиск

Сегодня столкнулся с проблемой, не происходил нужный мне регистронезависимый поиск, а именно не отрабатывало вот это:

    $word='модуль для сетевой игры';  
    $text='Модуль для сетевой игры ';  
    echo str_replace(Array('.',' '),Array('\.','\s'),trim($word));  
    if (preg_match('|('.str_replace(Array('.',' '),Array('\.','\s'),trim($word)).')|Usix', $text, $regs)) {}  
    print_r($regs);

Сново нашел ответ на форуме dklab, а именно нужно выставить русскую локаль

setlocale(LC_ALL, 'ru_RU.CP1251');

либо для utf-8

setlocale(LC_ALL, 'ru_RU.UTF-8');

тогда наш пример примет такой вид:

setlocale(LC_ALL, 'ru_RU.CP1251');  
$word='модуль для сетевой игры';  
$text='Модуль для сетевой игры ';  
echo str_replace(Array('.',' '),Array('\.','\s'),trim($word));  
if (preg_match('|('.str_replace(Array('.',' '),Array('\.','\s'),trim($word)).')|Usix', $text, $regs)) {}  
print_r($regs);

Все работает 🙂

Категории: PHP
Тэги: pcre

Комментарии (0)