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-ленту комментариев