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 :: проверка с помощью регулярных выражений

 PHP.SU

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


 Страниц (4): [1] 2 3 4 »   

> Без описания
alnik-75
Отправлено: 13 Июля, 2013 - 17:53:35
Post Id



Посетитель


Покинул форум
Сообщений всего: 338
Дата рег-ции: Сент. 2012  
Откуда: Гродно, Беларусь


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




Уважаемые форумчане!!!
Прошу оказать помощь. Мне необходимо организовать проверку введеных пользователем данных. Это должно быть число из 8 цифр.
Каков должен быть шаблон для проверки с помощью preg_match.
Заранее спасибо за помощь
 
 Top
LIME
Отправлено: 13 Июля, 2013 - 17:54:52
Post Id


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


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


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




#^\d{8}$#

(Отредактировано автором: 13 Июля, 2013 - 17:55:08)

 
 Top
alnik-75
Отправлено: 13 Июля, 2013 - 18:00:29
Post Id



Посетитель


Покинул форум
Сообщений всего: 338
Дата рег-ции: Сент. 2012  
Откуда: Гродно, Беларусь


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




LIME пишет:
#^\d{8}$#

LIME! Помогите расшифровать данный шаблон.
d-означает цифрыю
{8}-длина строки
Что означают решетки?
Для чего делается экранивароние?
почему ставится ^ и $ ? Это значит точное совпадение?
 
 Top
LIME
Отправлено: 13 Июля, 2013 - 18:07:44
Post Id


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


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


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




решетки это ограничитель шаблона...он может быть любым
экранирование чтоб показать что это не символ d а число
^ начало строки
$ конец строки
значит 8 цифр от начала и до конца строки(значит ничего больше в строке нет)
(Добавление)
перевод строки \n ...зачем тут экранирование?
 
 Top
alnik-75
Отправлено: 13 Июля, 2013 - 18:11:59
Post Id



Посетитель


Покинул форум
Сообщений всего: 338
Дата рег-ции: Сент. 2012  
Откуда: Гродно, Беларусь


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




LIME пишет:
решетки это ограничитель шаблона...он может быть любым
экранирование чтоб показать что это не символ d а число
^ начало строки
$ конец строки
значит 8 цифр от начала и до конца строки(значит ничего больше в строке нет)
(Добавление)
перевод строки \n ...зачем тут экранирование?

чтобы придать символу n специальную функцию? А что было бы если не было перед ней обратного слэша?
 
 Top
LIME
Отправлено: 13 Июля, 2013 - 18:14:16
Post Id


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


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


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




странный вопрос...была бы буква n
 
 Top
alnik-75
Отправлено: 13 Июля, 2013 - 18:15:32
Post Id



Посетитель


Покинул форум
Сообщений всего: 338
Дата рег-ции: Сент. 2012  
Откуда: Гродно, Беларусь


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




LIME пишет:
странный вопрос...была бы буква n

Я это понял. Спасибо за помощь. Стыдно, что изучаю PHP почти год, а в регулярных выражениях "ни в зуб ногой"
 
 Top
AlexAnder
Отправлено: 13 Июля, 2013 - 18:16:13
Post Id



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


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


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




LIME пишет:
странный вопрос...была бы буква n

\d
(Добавление)
Цитата:
Помогите расшифровать данный шаблон.
d-означает цифрыю
{8}-длина строки
Что означают решетки?
Для чего делается экранивароние?
почему ставится ^ и $ ? Это значит точное совпадение?

стреляешь как с пушки, интересно, а в гугл пробовал целиться?


-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 Top
alnik-75
Отправлено: 13 Июля, 2013 - 18:19:58
Post Id



Посетитель


Покинул форум
Сообщений всего: 338
Дата рег-ции: Сент. 2012  
Откуда: Гродно, Беларусь


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




AlexAnder!
Не особо! Особой необходимости не было. Немного понимаю значения символов, но чтобы слепить из этого шаблон, нужно практиковаться, а я этого, как раз и не делал.
Получив совет от LIME, я смогу подобные теперь шаблоны строить))))))))))))
 
 Top
teddy
Отправлено: 13 Июля, 2013 - 19:20:44
Post Id


Участник


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


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




alnik-75
alnik-75 пишет:
Прошу оказать помощь. Мне необходимо организовать проверку введеных пользователем данных. Это должно быть число из 8 цифр.
Каков должен быть шаблон для проверки с помощью preg_match.


Интересно, чего вы так влюбились в preg_match? Я ни чуть не хочу задеть ваше мнение, мне просто самому интересно... Я бы например сделал приблизительно так, если мне нужно было бы проверить число:

PHP:
скопировать код в буфер обмена
  1. $num = 1234; // $num = intval($_POST['num']);
  2.  
  3. if(!is_integer($num) or strlen($num) != 8)
  4. {
  5.     echo "Данные не являются числом или меньше/больше 8 цифр";
  6. }
  7. else
  8. {
  9.     $num = abs(intval($num));
  10.     echo "Данные являются числом ".$num;
  11. }

Ну по разному сделать можно... и без регулярки ) Можно ошибки разделить, сделать два условия, ну фантазируйте )

Если хотите ЦЕЛОЕ число, тогда в блоке else уберите abs()

И всё...

(Отредактировано автором: 13 Июля, 2013 - 22:29:59)

 
 Top
alnik-75
Отправлено: 13 Июля, 2013 - 19:34:37
Post Id



Посетитель


Покинул форум
Сообщений всего: 338
Дата рег-ции: Сент. 2012  
Откуда: Гродно, Беларусь


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




teddy пишет:


PHP:
скопировать код в буфер обмена
  1. $num = 1234;
  2. if(!is_integer($num) or strlen($num) != 8)
  3. {
  4.     echo "Данные не являются числом или меньше/больше 8 цифр";
  5. }
  6. else
  7. {
  8.     $num = abs(intval($num));
  9.     echo "Данные являются числом ".$num;
  10. }

Почему тогда не is_numeric()?
 
 Top
teddy
Отправлено: 13 Июля, 2013 - 19:38:53
Post Id


Участник


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


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




alnik-75 пишет:
Почему тогда не is_numeric()?

Я сейчас переведу вам этот код на Русский )

Что творится в if:
- Если пользователь ввел не число, что угодно но не число, или он ввел число, но длина числа не равна 8 символов, то мы попадаем в блок if и пользователь получает ошибку.

Что творится в else:
Если всё хорошо, пользователь ввел число, мы можем отфильтровать это число ДО ЦЕЛОГО при необходимости. Тоесть что бы не смогли прислать -150 или 15.5

И дальше что то делать в этом блоке с этими данными в зависимости от необходимости

(Отредактировано автором: 13 Июля, 2013 - 19:41:25)

 
 Top
alnik-75
Отправлено: 13 Июля, 2013 - 19:41:17
Post Id



Посетитель


Покинул форум
Сообщений всего: 338
Дата рег-ции: Сент. 2012  
Откуда: Гродно, Беларусь


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




Я то понял, что там в if else творится. Я просто к тому, что, согласно мануалу для проверки введенных пользователем данных в форму(а именно это я в первом сообщении указал) советуется использовать is_numeric(). Вот я к чему)))))))))))))))
 
 Top
teddy
Отправлено: 13 Июля, 2013 - 19:44:53
Post Id


Участник


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


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




alnik-75
Потому что is_numeric может принимать ещё и числовые строки. А is_interger строго по типу...

Это уже от конкретного случая зависит... Можно ещё не != а !== сделать, чтоб железно, по типу )
(Добавление)
Тоесть при is_numeric пройдет "12345678" а при is_integer нет... только без кавычек

(Отредактировано автором: 13 Июля, 2013 - 19:46:53)

 
 Top
alnik-75
Отправлено: 13 Июля, 2013 - 19:49:10
Post Id



Посетитель


Покинул форум
Сообщений всего: 338
Дата рег-ции: Сент. 2012  
Откуда: Гродно, Беларусь


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




teddy пишет:
alnik-75
Потому что is_numeric может принимать ещё и числовые строки. А is_interger строго по типу...

Это уже от конкретного случая зависит... Можно ещё не != а !== сделать, чтоб железно, по типу )
(Добавление)
Тоесть при is_numeric пройдет "12345678" а при is_integer нет... только без кавычек

А как число 12345678 придет в POST ?
 
 Top
Страниц (4): [1] 2 3 4 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB