0

如何仅检查从 -10 负数到 +10 正数的数字?

这就是我所拥有的,但我认为它不安全:

if(isset($_POST['number']) && ctype_digit($_POST['number']) && $_POST['number']>=-10 && $_POST['number']<=10){
    //do something
}

和形式:

Input a number between -10 and 10: <input type="text" name="number" size="5" />
4

2 回答 2

2
if( isset($_POST['number'])) {
    $num = intval($_POST['number']);
    if( $num >= -10 && $num <= 10) {
        // do something
    }
}

还有其他方法,但那一种会奏效。任何不能转换为数字的都将被视为零。如果这不是所需的行为,请添加:

&& "".$num == $_POST['number']

对于该内部 IF 语句,以确保没有从输入中删除任何非数字字符。

于 2012-02-15T22:37:02.417 回答
1

检查变量是否为包含零值和负值的数字

$x = '-22';
if (isNumber($x, ['zero','negative']))
    echo 'Yes';
else
    echo 'No';

isNumber($x, $includes=[])
{       
    if (is_int($x)) {
        if ($x === 0) {
            if (in_array('zero', $includes))
                return true;
        } elseif ($x < 0) {
            if (in_array('negative', $includes))
                return true;
        } else
            return true;
    } elseif (is_string($x)) {
        if ($x == '0') {
            if (in_array('zero', $includes))
                return true;
        } elseif ($x[0] == '-') {
            if (in_array('negative', $includes))
                return ctype_digit(substr($x, 1));
        } else
            return ctype_digit($x);
    }
}
于 2015-11-30T18:55:28.327 回答