Php 筛选变量并验证整数值
我试图验证我的变量是否为32位有符号整数 我想我可以使用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
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
的输入应该是一个字符串。