#php
Есть что-то короче этого if ($var == 1 || $var == 2 || $var == 3 || $var == 4 || $var == 5 || $var == 6 || $var == 7 || $var == 8 || $var == 9 || $var == 0) ?
Ответы
Ответ 1
if (preg_match('!^[0-9]$!',$var)) остальные предложенные варианты не годятся, в том числе и код автора вопроса $var = "3 piglets"; var_dump($var == 1 || $var == 2 || $var == 3 || $var == 4 || $var == 5 || $var == 6 || $var == 7 || $var == 8 || $var == 9 || $var == 0); var_dump(in_array($var, [1,2,3,4,5,6,7,8,9,0])); var_dump($var>=0 && $var<=9); var_dump(preg_match('!^[0-9]$!',$var)); // bool(true) // bool(true) // bool(true) // int(0) Учим РНР, читаем про приведение типов. Отличительной особенностью сайтов сети Stack Overflow является то, что большинство посетителей составляют люди, весьма поверхностно знакомые с предметом вопроса.Ответ 2
Для тех, кто избегает регулярных выражений: if(sscanf($var,"%1d%s")==[$var,null]), так можно проверить и первую цифру, и отсутствие текста за ней. Тест: var_dump(sscanf($var="1","%1d%s")==[$var,null]); var_dump(sscanf($var="12","%1d%s")==[$var,null]); var_dump(sscanf($var="3 piglets", "%1d%s")==[$var,null]); Результаты: boolean true boolean false boolean falseОтвет 3
Проверить, что длина ровно один байт, а ASCII-код символа – от 48 до 57 (десятичные цифры): if( strlen($var)==1 && ord($var)>=48 && ord($var)<=57) Тесты: 0 true 1 true 2 true 3 true 4 true 5 true 6 true 7 true 8 true 9 true 10 false 11 false '1' true 'A' false '4Hero' false 'Ё' false 'Стэк' false
Комментариев нет:
Отправить комментарий