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
Форумы портала PHP.SU :: Версия для печати :: Условие preg_match
Форумы портала PHP.SU » » Вопросы новичков » Условие preg_match

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

1. Арикус - 14 Апреля, 2016 - 18:44:26 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. if (!preg_match ('/^[0-9]{11-16}$/u', $_POST['yandNum']))
  2. {echo '<div class="bg-warning"> В поле "Номер кошелька" должно быть число от 11 до 16 знаков. </div>';
  3. var_dump($_POST);}

выдаёт (*** - секрет):

В поле "Номер кошелька" должно быть число от 11 до 16 знаков.
array(9) { *** ["yandNum"]=> string(14) "41001390203275" ***}

Условие не должно выполняться, но выполняется. Почему?
2. Строитель - 14 Апреля, 2016 - 18:52:05 - перейти к сообщению
Арикус пишет:
Условие не должно выполняться, но выполняется. Почему?
Диапазон чисел в регулярке не правильно задан. Вместо тире нужна запятая {11,16}
ps: могу и ошибаться.
(Добавление)
Арикус, затестил на локалке, вроде работает
PHP:
скопировать код в буфер обмена
  1.     if (!preg_match('/[0-9]{11,16}/u', $_POST['yandNum'])) {
  2.         echo '<div> В поле "Номер кошелька" должно быть число от 11 до 16 знаков. </div>';
  3.         var_dump($_POST);
  4.     }

 

Powered by ExBB FM 1.0 RC1