Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > Заставить регулярные выражения понимать кириллицу


Автор: Nope 13.7.2007, 17:08
Суть проблемы:

Код

<?
preg_match("/(\w*)/","hello",$pockets);
print_r($pockets);
?>


выдает следущее:
Код

Array ( [0] => hello [1] => hello ) 


если натравить подобное на кириллицу
Код

<?
preg_match("/(\w*)/","привет",$pockets);
print_r($pockets);
?>


выдает такое:
Код

Array ( [0] => [1] => ) 


подскажите, что и как нужно изменить в настройках хосинг-сервера, так чтобы второй пример работал аналогично первому.

Заранее спасибо.

Автор: FlameTH 13.7.2007, 17:28
Попробуй установить локаль на рускую.

Автор: mishaSL 13.7.2007, 17:30
Необходимо настроить локаль. Для *nix это будет выглядеть так:
Код

setlocale(LC_ALL, "ru_RU.CP1251");

Это если используете кодировку cp1251. Описание подробнее http://php.net/setlocale

Автор: Nope 13.7.2007, 17:36
Про setlocale мысля пришла сразу же, вопрос вот в чем: можно ли глобально, и если да то как, изменить настройки php так, чтобы в каждом скрипте на пришлось писать setlocale(LC_ALL, "ru_RU.CP1251");

Автор: GZep 13.7.2007, 19:49
ну, если вы имеет доступ к php.ini. Или воткнуть эту строчку в файл, который подключается в каждом скрипте (например конфиг файл)

Автор: ilyalyu 13.7.2007, 23:13
Думаю \w с кирилицей работать не будет. А почему не написать вместо этого [a-zA-Zа-яА-Я] ?

Автор: mishaSL 14.7.2007, 18:27
Цитата(ilyalyu @  13.7.2007,  23:13 Найти цитируемый пост)
Думаю \w с кирилицей работать не будет

Это Вы не правильно думаете. Отлично работает с кириллицей, главное правильно указать локаль.

Автор: Nope 16.7.2007, 09:27
GZep, можно про настройки php.ini по этому вопросу немножко поподробнее?

Автор: mclight 16.7.2007, 11:40
UTF-8

Автор: w1zard350 13.8.2010, 22:01
у меня setlocale() не заработала. В чем проблема? Который час пытаюсь понять/разобраться, все впустую.  Что можно еще сделать? Какие настройки изменить? Все что угодно, только бы сдвинуться с места..

Автор: bars80080 13.8.2010, 23:50
покажите свою регулярку

Автор: Photon 15.8.2010, 08:40
Использовать UTF-8 и модификатор u в регулярке..
Код

preg_match("/(\w*)/u","привет",$pockets);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)