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

Программирование, которое не связано с API и Flash.

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

Сообщение Serge » 28 сен 2012, 00:00

В общем, возникла такая беда. Надо проверить, что введенные данные состоят только из русских букв, если нет - выдать ошибку. Намучался я с этой проверкой, никак не выходит...
Варианты, что пробовал:
  1.  
  2. !preg_match("/^[А-Яа-я]*$/", $string)
  3. preg_match("/^[А-Яа-я]*$/", $string)
  4. !preg_match("/^[А-Я,а-я]*$/", $string)
  5. preg_match("/^[А-Я,а-я]*$/", $string)
  6.  

И так далее, и тому подобные... Во всех вариантах возникает 2 возможности: 1) пишу что угодно - хавает (причем выражение в яваскрипте /^[а-яА-Я]+$/ не пускает, а php вполне нормально принимает), 2) не воспринимает вообще ничего (пробовал русский, английский, цифры. С выражением "/^[а-яА-Я]*$/" принимает строки формата аА, и ничего более).
Про регулярные выражения начитался много, но так и не вышло. Помогите, кто чем может...
http://sevenlines.com.ua - разработка и продвижение сайтов
Serge
WEB Team
WEB Team
 
Автор темы
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55
Благодарил (а): 2 раз.
Поблагодарили: 65 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



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

Сообщение sanych_dv » 28 сен 2012, 01:58

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

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

Сообщение Serge » 28 сен 2012, 08:19

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

Может я ночью не правильно сформулировал :)
В яваскрипте (проверка на клиенте) - срабатывает все отлично, пропускает только русский текст. А вот на сервере (php) уже не принимает русские, вообще не пойму, что оно принимает...
http://sevenlines.com.ua - разработка и продвижение сайтов
Serge
WEB Team
WEB Team
 
Автор темы
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55
Благодарил (а): 2 раз.
Поблагодарили: 65 раз.

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

Сообщение sanych_dv » 28 сен 2012, 10:34

Проверяйте корректность кодировки на сервере.
sanych_dv
Разработчик
Разработчик
 
Сообщения: 550
Зарегистрирован: 29 апр 2011, 01:52
Благодарил (а): 1 раз.
Поблагодарили: 77 раз.

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

Сообщение Serge » 28 сен 2012, 20:27

sanych_dv писал(а):Проверяйте корректность кодировки на сервере.

Даже не знаю, куда смотреть :) Скрипт - UTF-8 без бом, переданные данные возвращает нормально.
Меня смущает, что запросы
  1. preg_match("/^[a-zA-Z]*$/", $str);
  2. preg_match("/^[а-яА-Я]*$/", $str);

при передавании им русской строки дают один и тот же результат. Может я чего-то не понимаю в самих регулярках? Или куда глянуть на счет кодировки сервера... На сайте хостинга полазил - ничего такого не нашел.
http://sevenlines.com.ua - разработка и продвижение сайтов
Serge
WEB Team
WEB Team
 
Автор темы
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55
Благодарил (а): 2 раз.
Поблагодарили: 65 раз.

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

Сообщение Serge » 28 сен 2012, 22:28

Спасибо, поставил где-то в настройках кодировку, работает с регулярным выражением preg_match("/[a-zA-Z]/", $str);
http://sevenlines.com.ua - разработка и продвижение сайтов
Serge
WEB Team
WEB Team
 
Автор темы
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55
Благодарил (а): 2 раз.
Поблагодарили: 65 раз.

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

Сообщение Alazaur » 28 сен 2012, 23:09

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

:)
Alazaur
Разработчик
Разработчик
 
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25
Благодарил (а): 24 раз.
Поблагодарили: 121 раз.


  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в Программирование на PHP и других языках (без использования API)



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1