preg_match и русские буквы

Март 24th, 2010

Весь месяц у меня проходит под знаком программинга. Грех не делиться стандартными решениями при преодолении типовых проблем. Сегодня всплыла старая головоломка - preg_match (preg_replace) игнорирует при поиске русские буквы. При этом раньше работало. Все упирается в директиву setlocale. По умолчанию, она может отсутствовать. Для проверки существования нужной locale (скорее всего вам нужна cp1251) в шелле введите команду:

locale -a

Далее вам выдается весь список доступных. Не беда, если ни одной нету - сейчас мы ее установим. В разных версиях linux’ах locale распологается либо в /usr/share/locale/, либо /usr/lib/locale/.
Локаль уже есть в i18n, необходимо лишь сгенерить из нее LC которая установится в /usr/share/locale/ru_RU.CP1251 или в /usr/lib/locale/ru_RU.CP1251 ( всё зависит от типа Linux)

Для установки locale CP1251 выполняем:

localedef -c -i ru_RU -f CP1251 ru_RU.CP1251

Для проверки можно выполнить такой скрипт:

<?
$l=setlocale(LC_ALL, “ru_RU.CP1251″);
var_export($l); // посмотрим, что локаль включилась. Если нет - скрипт выдаст false
if (!preg_match(”|русс|i”,”русский язык”)) echo “русский так и не заработал”;
?>

Рубрики: СЕО-будни

Оставить комментарий

Обязательно

Обязательно, скрыт

Немного HTML кода:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Трекбек для записи  |  Подписаться на RSS-ленту комментариев



Календарь

Сентябрь 2010
Пн Вт Ср Чт Пт Сб Вс
« Июл    
 12345
6789101112
13141516171819
20212223242526
27282930  

Делаю акцент

Последние записи

Привыкли получать свежак по почте? Подписываемся на блог через форму: