Самый короткий способ проверить, содержит ли переменная положительное целое число с помощью PHP?

Я хочу проверить если ввод данных пользователем положительное целое число.

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 даже на положительных целых числах. Существует ли строка к международной проблеме?

18
задан T Zengerink 15 February 2013 в 16:24
поделиться

3 ответа

Что-то вроде этого должно сработать. Преобразуйте значение в целое число и сравните его с исходной формой (поскольку мы используем == , а не === , PHP игнорирует тип при проверке равенства). Затем, поскольку мы знаем, что это целое число, мы проверяем, что оно> 0. (В зависимости от вашего определения положительного числа вы можете захотеть > = 0 )

$num = "20";

if ( (int)$num == $num && (int)$num > 0 )
34
ответ дан 30 November 2019 в 05:50
поделиться

Попробуйте встроенную функцию 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)

30
ответ дан 30 November 2019 в 05:50
поделиться

самый простой способ:

if intval ($ x)> 0 echo "true"

1
ответ дан 30 November 2019 в 05:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: