Php 筛选变量并验证整数值

Php 筛选变量并验证整数值,php,Php,我试图验证我的变量是否为32位有符号整数 我想我可以使用filter\u var()和filter\u VALIDATE\u INT但是显然,PHPs对INT的定义是完全不同的,9999999999999999毫无问题地通过了 看报纸,它没有说任何具体的事情。那么,filter\u var($var,filter\u VALIDATE\u INT)VALIDATE?您可以为filter\u VALIDATE\u INT设置自己的限制: $int = 999999999999999999; $mi

我试图验证我的变量是否为32位有符号整数

我想我可以使用
filter\u var()
filter\u VALIDATE\u INT
但是显然,PHPs对INT的定义是完全不同的,
9999999999999999
毫无问题地通过了


看报纸,它没有说任何具体的事情。那么,
filter\u var($var,filter\u VALIDATE\u INT)
VALIDATE?

您可以为
filter\u VALIDATE\u INT
设置自己的限制:

$int = 999999999999999999;
$min = 1;
$max = 2147483647;

if (filter_var($int, FILTER_VALIDATE_INT, array("options"=>
    array("min_range"=>$min, "max_range"=>$max))) === false) {
    echo("Variable value is not within the legal range");
} else {
    echo("Variable value is within the legal range");
}
//This will output "Variable value is not within the legal range"
资料来源:

整数最大大小基于系统:

32位系统上:INT max将为
2147483647


64位系统上
:INT max将是
9223372036854775807
我认为您的问题更多地在于:

整数的大小取决于平台,尽管通常的最大值约为20亿(即32位有符号)。64位平台的最大值通常约为9E18,Windows除外,它始终为32位。PHP不支持无符号整数。整数大小可以使用常量PHP_INT_size确定,最大值可以使用自PHP 4.4.0和PHP 5.0.5以来的常量PHP_INT_MAX确定


FILTER\u VALIDATE\u INT
允许将最小范围和最大范围作为选项传递。您可能应该使用它们。

您可以使用
ctype\u digit
检查它是否为整数

默认情况下,PHP中整数的最大大小在
0-2147483647
范围内

它还取决于您的平台,这适用于32位平台

通常情况就是这样

if (ctype_digit(2147483647)) {
    echo 'integer';
}
if (!ctype_digit(2147483648)) {
    echo 'not an integer';
}
if (!ctype_digit(-2147483647)) {
    echo 'not an integer';
}

我在使用
FILTER\u VALIDATE\u INT
的限制时也遇到了问题。在我的机器上,经过一些测试魔术最大值的尝试和错误,结果是899795648511。以下是我的测试结果:

编辑:
上面的测试是通过将测试值硬编码到PHP脚本中作为max_范围数来完成的。但是,在表单字段中输入899795648511会导致生成一条错误消息,该消息说“必须是一个整数。您可能希望查看此字段,因此链接到
ctype_digit
的输入应该是一个字符串。