Страница 1 из 1

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

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

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

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

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

Добавлено: 28 сен 2012, 01:58
sanych_dv
Попробуйте в JavaScript указать диапазон символов кириллицы в юникоде: [\u0400-\u04FF]

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

Добавлено: 28 сен 2012, 08:19
Serge
sanych_dv писал(а):Попробуйте в JavaScript указать диапазон символов кириллицы в юникоде: [\u0400-\u04FF]
Может я ночью не правильно сформулировал :)
В яваскрипте (проверка на клиенте) - срабатывает все отлично, пропускает только русский текст. А вот на сервере (php) уже не принимает русские, вообще не пойму, что оно принимает...

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

Добавлено: 28 сен 2012, 10:34
sanych_dv
Проверяйте корректность кодировки на сервере.

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

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

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

preg_match("/^[a-zA-Z]*$/", $str);preg_match("/^[а-яА-Я]*$/", $str);
при передавании им русской строки дают один и тот же результат. Может я чего-то не понимаю в самих регулярках? Или куда глянуть на счет кодировки сервера... На сайте хостинга полазил - ничего такого не нашел.

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

Добавлено: 28 сен 2012, 22:28
Serge
Спасибо, поставил где-то в настройках кодировку, работает с регулярным выражением preg_match("/[a-zA-Z]/", $str);

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

Добавлено: 28 сен 2012, 23:09
Alazaur
Для работы с UTF-8 модификатор u нужен

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

preg_match("/^[А-я]*$/u", $string);
:)