Я хочу проверить если ввод данных пользователем положительное целое число.
1 = true
+10 = true
.1 = false
-1 = false
10.5 = false
Just a positive number.
No characters.
No special character.
No dot.
No minus sign.
Я попробовал is_int()
функционируйте, но это возвращает false даже на положительных целых числах. Существует ли строка к международной проблеме?
Что-то вроде этого должно сработать. Преобразуйте значение в целое число и сравните его с исходной формой (поскольку мы используем ==
, а не ===
, PHP игнорирует тип при проверке равенства). Затем, поскольку мы знаем, что это целое число, мы проверяем, что оно> 0. (В зависимости от вашего определения положительного числа вы можете захотеть > = 0
)
$num = "20";
if ( (int)$num == $num && (int)$num > 0 )
Попробуйте встроенную функцию Filter *
filter_var($value, FILTER_VALIDATE_INT, array(
'options' => array('min_range' => 1)
));
*, если вы просто хотите убедиться, что входная строка состоит из цифр произвольной длины последовательность, используйте регулярное выражение с [0-9] или [\ d +]
Примеры с filter_var
:
var_dump( filter_var(1, FILTER_VALIDATE_INT) ); // int(1)
var_dump( filter_var('1', FILTER_VALIDATE_INT) ); // int(1)
var_dump( filter_var('+10', FILTER_VALIDATE_INT) ); // int(10)
var_dump( filter_var(.1, FILTER_VALIDATE_INT) ); // bool(false)
var_dump( filter_var('.1', FILTER_VALIDATE_INT) ); // bool(false)
var_dump( filter_var(-1, FILTER_VALIDATE_INT,
array('options' => array('min_range' => 1))) ); // bool(false)
var_dump( filter_var('-1', FILTER_VALIDATE_INT,
array('options' => array('min_range' => 1))) ); // bool(false)
var_dump( filter_var('2147483648', FILTER_VALIDATE_INT) ); // bool(false)
var_dump( filter_var('0xFF', FILTER_VALIDATE_INT) ); // bool(false)
var_dump( filter_var(0xFF, FILTER_VALIDATE_INT) ); // int(255)
самый простой способ:
if intval ($ x)> 0 echo "true"