Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Рег. выражения для ФИО
 
 автор: BiFF   (22.12.2007 в 16:49)   письмо автору
 
 

Помогите составить рег. выражение для заполнения поля ФИО, формат заполненния поля -
Иванов И.И.
Превая буква всегда большая, потом некоторое колич. прописных, пробел, 1 большая, точка, снова 1 большая, точка. Моя наработка такая -

preg_match("|^[А-ЯЁ]{1}[а-яё]{1,15}\s[А-ЯЁ]{1}[.]{1}[А-ЯЁ]{1}[.]{1}$|",$fio)

Помогите привести в рабочий вид или напишите "покрасивей"

PS.
Еще помогите с этим -
preg_match("|^[-+а-яё0-9_;:'\",.\s]+$|i"
нужно разрешить вводить: а-я в любом регистре, цифры и символы
 -+.,;:"_'
.

   
 
 автор: Саня   (22.12.2007 в 17:02)   письмо автору
 
   для: BiFF   (22.12.2007 в 16:49)
 

Первое выражение нормально работает.
<?
var_dump
(preg_match("|^[А-ЯЁ][а-яё]{1,15}\s[А-ЯЁ]\.[А-ЯЁ]\.$|""Иванов И.И."));

<?
$symb 
preg_quote("-+.,;:\"_'");
preg_match("|^[а-яё\d".$symb."]+$|i"$data);

   
 
 автор: Trianon   (22.12.2007 в 17:15)   письмо автору
 
   для: Саня   (22.12.2007 в 17:02)
 

to: BiFF

В фамилиях могут встречаться дефисы и большие буквы в середине.
А отчества могут отсутствовать совсем.

   
 
 автор: BiFF   (22.12.2007 в 20:21)   письмо автору
 
   для: Саня   (22.12.2007 в 17:02)
 

Так, а почему тогда у меня не работает
Кусок формы:

<meta http-equiv="Content-Type" content="text/html; carset=UTF8">
.....
<td >Фио</td>
 <td>
 <input type="text" name="fio" size="20" maxlength="20" value="<?php echo   $_POST['fio'];?>">
 </td>
</tr>
<tr>
 <td colspan="2">&nbsp;</td>
</tr>
<tr>
 <td colspan="2">
 <input type="submit" value="Записаться">
 </td>

Обработчик

<?php
if (isset($_POST['submit'])) 
{
....
$fio $_POST['fio'];
.....
 if(!
preg_match("|^[А-ЯЁ][а-яё]{1,15}\s[А-ЯЁ]\.[А-ЯЁ]\.$|",$fio)) exit("Не правильный формат заполнения поля");
......

Выдает "неправльный формат запонения поля"
До этого страницы были в cp1251, сейчас перевел в UTF8 и регулярка перестала работать.

   
 
 автор: Trianon   (23.12.2007 в 00:54)   письмо автору
 
   для: BiFF   (22.12.2007 в 20:21)
 

Для utf-8 в preg_math применяется модифицирующий ключ u

preg_match("|^.....$|u"...)

   
 
 автор: kasmanaft   (22.12.2007 в 17:21)   письмо автору
 
   для: BiFF   (22.12.2007 в 16:49)
 

Наверное, надо еще как-то продумать с ФИО. Ведь бываю фамили с "-", имена: Джон - сокращается, вроде бы, до Дж. Сам тут не очень разбираюсь... но как-то так :)

Саня
>> $symb = preg_quote("-+.,;:\"_'");
Ведь в символьных классах (кв. скобках) не нужно ничего экранировать.. даже точка являеся обычной точкой..

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования