Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Где ошибка? preg_match

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
makar3000
Отправлено: 05 Сентября, 2011 - 20:21:24
Post Id



Гость


Покинул форум
Сообщений всего: 107
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)

[+]


PHP:
скопировать код в буфер обмена
  1.         if(empty($name)) {
  2.                  echo 'не заполнено поле Имя';
  3.         } else {
  4.                 if(preg_match('$[^а-яА-Яa-z0-9\-\_\.]+$i', $name)) {
  5.                         echo 'недопустимые символы';
  6.                 }
  7.         }
  8.  
  9.        
  10.         if(empty($fam)) {
  11.                  echo 'не заполнено поле фамилия';
  12.         } else {
  13.                 if(preg_match('$[^а-яА-Яa-z0-9\-\_\.]+$i', $fam)) {
  14.                         echo 'недопустимые символы';
  15.                 }
  16.         }
  17.  


Вот смотрите ввожу допустим в первое поле (Имя) с с большой буквы... Все норм
Ввожу Фамилию ошибка недопустимые символы... ввожу на русском.

Может не правильно сделал проверку [^а-яА-Яa-z0-9\-\_\.]
 
 Top
LIME
Отправлено: 05 Сентября, 2011 - 20:40:24
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




makar3000 неуверен насчет регулярки но если первая работает то вероятно что фамилия не приходит
выводите фамилию сначала чтобы проверить строку в которой ищет
возможно она пустая
 
 Top
White
Отправлено: 05 Сентября, 2011 - 20:40:29
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)




PHP:
скопировать код в буфер обмена
  1. if(!preg_match("/^[А-яА-zё0-9\-\_\.]+$/i", $fam)) echo 'недопустимые символы';


-----
if(time()>1356048000) die();
 
 Top
Champion Супермодератор
Отправлено: 05 Сентября, 2011 - 20:54:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Ну можно увидеть, какой недопустимый символ нашла регулярка:
PHP:
скопировать код в буфер обмена
  1. if (preg_match('$[^а-яА-Яa-z0-9\-\_\.]+$i', $fam, $m)) {
  2. echo 'недопустимый символ' ; var_dump($m);
  3. }
Кстати, если пишете в utf-8, надо написать маленькую букву u и помнить, что А-Я (большие буквы) - это не один интервал, а 2 отдельных интервала А-ПР-ЯЁ (не точно помню, где первый интервал заканчивается: на П или не на П). Поэтому лучше писать маленькие [а-яё] с регистронезависимостью, а большие вообще не указывать
 
 Top
f111
Отправлено: 06 Сентября, 2011 - 14:08:58
Post Id


Новичок


Покинул форум
Сообщений всего: 53
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




Champion, разве? в каком языке? я тестил на php, и вот результат:

искомый текст: "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"

РВ: "|[А-ЯЁ]+|"

совпадения: "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"
________________________________ _______________________
искомый текст: "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"

РВ: "|[а-яё]+|i"

совпадения: Совпадений не найдено.
(Добавление)
makar3000 пишет:
if(preg_match('$[^а-яА-Яa-z0-9\-\_\.]+$i', $name))

Интересная регулярка, знак доллара всегда используется что бы обозначить конец строки, вы же его используете в качестве границ выражения.

РВ пользователя White должно подойти.

ну или мой вариант который не сильно отличается:
PHP:
скопировать код в буфер обмена
  1. if(preg_match("|^[^А-ЯЁа-яёA-Za-z0-9-_.]+$|i", $fam)) echo 'недопустимые символы';

(Отредактировано автором: 06 Сентября, 2011 - 14:24:10)

 
 Top
Champion Супермодератор
Отправлено: 06 Сентября, 2011 - 18:12:18
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




f111 пишет:
разве? в каком языке? я тестил на php, и вот результат:
в русском языке в кодировке UTF-8
(Добавление)
Маленькие буквы не подряд идут, а большие подряд.
http://www[dot]utf8-chartable[dot]de/uni[dot][dot][dot]de-utf8-table[dot]pl - вот тут если выбрать кириллицу (9 пункт меню), маленькая буква п имеет код \xD0BF, а следующая - уже \xD180
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB