preg_match + регулярные выражения

Программирование, которое не связано с API.
Ответить
Serge
WEB Team
WEB Team
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55

preg_match + регулярные выражения

Сообщение Serge »

В общем, возникла такая беда. Надо проверить, что введенные данные состоят только из русских букв, если нет - выдать ошибку. Намучался я с этой проверкой, никак не выходит...
Варианты, что пробовал:

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

 !preg_match("/^[А-Яа-я]*$/", $string)preg_match("/^[А-Яа-я]*$/", $string)!preg_match("/^[А-Я,а-я]*$/", $string)preg_match("/^[А-Я,а-я]*$/", $string) 
И так далее, и тому подобные... Во всех вариантах возникает 2 возможности: 1) пишу что угодно - хавает (причем выражение в яваскрипте /^[а-яА-Я]+$/ не пускает, а php вполне нормально принимает), 2) не воспринимает вообще ничего (пробовал русский, английский, цифры. С выражением "/^[а-яА-Я]*$/" принимает строки формата аА, и ничего более).
Про регулярные выражения начитался много, но так и не вышло. Помогите, кто чем может...
sanych_dv
Разработчик
Разработчик
Сообщения: 550
Зарегистрирован: 29 апр 2011, 01:52

Re: preg_match + регулярные выражения

Сообщение sanych_dv »

Попробуйте в JavaScript указать диапазон символов кириллицы в юникоде: [\u0400-\u04FF]
Serge
WEB Team
WEB Team
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55

Re: preg_match + регулярные выражения

Сообщение Serge »

sanych_dv писал(а):Попробуйте в JavaScript указать диапазон символов кириллицы в юникоде: [\u0400-\u04FF]
Может я ночью не правильно сформулировал :)
В яваскрипте (проверка на клиенте) - срабатывает все отлично, пропускает только русский текст. А вот на сервере (php) уже не принимает русские, вообще не пойму, что оно принимает...
sanych_dv
Разработчик
Разработчик
Сообщения: 550
Зарегистрирован: 29 апр 2011, 01:52

Re: preg_match + регулярные выражения

Сообщение sanych_dv »

Проверяйте корректность кодировки на сервере.
Serge
WEB Team
WEB Team
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55

Re: preg_match + регулярные выражения

Сообщение Serge »

sanych_dv писал(а):Проверяйте корректность кодировки на сервере.
Даже не знаю, куда смотреть :) Скрипт - UTF-8 без бом, переданные данные возвращает нормально.
Меня смущает, что запросы

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

preg_match("/^[a-zA-Z]*$/", $str);preg_match("/^[а-яА-Я]*$/", $str);
при передавании им русской строки дают один и тот же результат. Может я чего-то не понимаю в самих регулярках? Или куда глянуть на счет кодировки сервера... На сайте хостинга полазил - ничего такого не нашел.
Serge
WEB Team
WEB Team
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55

Re: preg_match + регулярные выражения

Сообщение Serge »

Спасибо, поставил где-то в настройках кодировку, работает с регулярным выражением preg_match("/[a-zA-Z]/", $str);
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

Re: preg_match + регулярные выражения

Сообщение Alazaur »

Для работы с UTF-8 модификатор u нужен

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

preg_match("/^[А-я]*$/u", $string);
:)
Ответить