[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Оставить только кириллицу
Rayled
Добрый вечер!
Есть форма регистрации. В ней есть обязательное к заполнению поле с id="myname"
в php-части проверяется заполнено ли это поле хоть чем-то, если нет, то всплывает ошибка.
Выглядит эта часть вот так:
elseif(!trim($_POST['myname'])){
$message = 'Введите имя';
}

Я решил сделать так, чтобы поле принимало только кириллицу и изменил код так:
elseif((!trim($_POST['myname'])) or !preg_match("/[а-яё]/i", $_POST['myname'])){
$message = 'Введите имя на кириллице';
}

Но получилось не совсем то. Если в поле была только латиница, то да, ошибка срабатывала, но достаточно одного кириллического символа среди латиницы и форма пропускала такой вариант.
Вот здесь я казалось нашел свой вариант, поэтому изменил код вот так:
elseif(!trim($_POST['myname']) or !preg_match("#^[а-яё\s]+$#is", $_POST['myname'])){
$message = 'Введите имя на кириллице';
}

Но теперь скрипт вообще не работает и в любом случае выскакивает ошибка "Введите имя на кириллице".
Пожалуйста, подскажите как изменить скрипт, чтобы поле пропускало только заглавные и строчные буквы кириллицы, а всё остальное выдавало ошибку.
Заранее спасибо!
walerus
Rayled
Попробуй так
elseif(!trim($_POST['myname']) or !preg_match("#^[а-яё\s]+$#iUsu", $_POST['myname'])){
$message = 'Введите имя на кириллице';
}
Почитай про регулярки, модификатор `u` - работа с кириллицей... И еще, добавь проверку на возможность(запрет) ввода пробела между символами, иначе "Ва ся", тоже пройдет проверку ...
Rayled
walerus, спасибо! Всё заработало! Про регулярки почитаю, просто пока времени совсем нет...( Что касается пробелов, то ещё не решил стоит ли... Просто некоторые пользователи, кто из-за возраста, кто из-за комплекса маленького человека, пишут свои имя и отчество вместо имени. Нашей системе это никак не вредит. Как говорится: "чем бы дитя ни тешилось", а всё же это наши клиенты) Но вот если убирать пробелы, то получится какой-нибудь ИванИванович или НатальяИвановна, а вот это уже не есть гуд.
walerus
Rayled
Можно сделать иначе, либо 2е поле добавить, для Отчества, либо автоматически его делать, при наличии пробела, т.е.:
1й вариант: "Иван" => результат:
Имя: Иван
Отчество: (просто не выводить данную строку)

2й вариант: "Иван Иванович" => результат(explode, регулярки...):
Имя: Иван
Отчество: Иванович

или просто менять пробел на "_": Иван Иванович === Иван_Иванович
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.