|
|
|
| Помогите составить рег. выражение для заполнения поля ФИО, формат заполненния поля -
Превая буква всегда большая, потом некоторое колич. прописных, пробел, 1 большая, точка, снова 1 большая, точка. Моя наработка такая -
preg_match("|^[А-ЯЁ]{1}[а-яё]{1,15}\s[А-ЯЁ]{1}[.]{1}[А-ЯЁ]{1}[.]{1}$|",$fio)
|
Помогите привести в рабочий вид или напишите "покрасивей"
PS.
Еще помогите с этим -
preg_match("|^[-+а-яё0-9_;:'\",.\s]+$|i"
| нужно разрешить вводить: а-я в любом регистре, цифры и символы. | |
|
|
|
|
|
|
|
для: BiFF
(22.12.2007 в 16:49)
| | Первое выражение нормально работает.
<?
var_dump(preg_match("|^[А-ЯЁ][а-яё]{1,15}\s[А-ЯЁ]\.[А-ЯЁ]\.$|", "Иванов И.И."));
|
<?
$symb = preg_quote("-+.,;:\"_'");
preg_match("|^[а-яё\d".$symb."]+$|i", $data);
|
| |
|
|
|
|
|
|
|
для: Саня
(22.12.2007 в 17:02)
| | to: BiFF
В фамилиях могут встречаться дефисы и большие буквы в середине.
А отчества могут отсутствовать совсем. | |
|
|
|
|
|
|
|
для: Саня
(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"> </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 и регулярка перестала работать. | |
|
|
|
|
|
|
|
для: BiFF
(22.12.2007 в 20:21)
| | Для utf-8 в preg_math применяется модифицирующий ключ u
preg_match("|^.....$|u"...)
|
| |
|
|
|
|
|
|
|
для: BiFF
(22.12.2007 в 16:49)
| | Наверное, надо еще как-то продумать с ФИО. Ведь бываю фамили с "-", имена: Джон - сокращается, вроде бы, до Дж. Сам тут не очень разбираюсь... но как-то так :)
Саня
>> $symb = preg_quote("-+.,;:\"_'");
Ведь в символьных классах (кв. скобках) не нужно ничего экранировать.. даже точка являеся обычной точкой.. | |
|
|
|