Использование русского диапазона регулярных выражений

Ответить
Аватара пользователя
btx

Использование русского диапазона регулярных выражений

Сообщение btx »

Есть входящие данные

PHP код:

Код: Выделить всё

$text = 'RussiaРоссия'; 






содержащие русский и английский текст. Необходимо обработать шаблоном используя регулярные выражения, к примеру, функцией ereg(). Можно УПРАЩЕННО составить шаблон на диапазон английских и русских букв:



PHP код:

Код: Выделить всё

$result = ereg('^[aA-zZаА-яЯ]$', $text); 






На сервере Windows все замечательно работает, но на *nix, увы, который не понимает русский язык отказывается принимать такую функцию и выдает сообщение об ошибке.

Как быть в такой ситуации, когда без проверки шаблона не обойтись и в любом случае используются русские символы.

---

Видел где то используют диапазон CHR кодов от русских символов, но реализовать самостоятельно не могу.
Аватара пользователя
ivank

Re: Использование русского диапазона регулярных выражений

Сообщение ivank »

btx

Особенность диапазоно в том, что их можно применять только для латинских букв и цифр. Т.к. только эти символы гарантировано идут подряд в любой кодировке (по крайней мере реально применяемой). Все остальные символы могут быть разбросаны _как угодно_ (например, русский символы в КОИ), да и кодировок существует куча.



Поэтому есть два варианта. Неправильный: Забить все символы в квадратные скобки [абвгде...яАБ...Я]. Правильный: поставить русскую локаль и пользоваться \w.
Ответить

Вернуться в «Программирование и базы данных»