我正在尝试使用FILTER_VALIDATE_INT
验证整数。它在ubuntu服务器上工作正常,但在我的本地win 10 xampp系统上返回false。
这是代码
案例1:
$d = "sdaf";
var_dump(filter_var($d, FILTER_VALIDATE_INT));
OP:bool(假)
案例2:
$d = "9876543210";
var_dump(filter_var($d, FILTER_VALIDATE_INT));
OP:bool(假)
案例3:
var_dump(filter_var(9876543210, FILTER_VALIDATE_INT));
OP:bool(假)
在服务器上:
var_dump(filter_var(9876543210, FILTER_VALIDATE_INT));
OP:int(9876543210)
答案 0 :(得分:2)
你是在64位Windows和64位服务器上运行32位Windows,32位PHP吗?
我想你可能是。如果你运行它,你将得到正确的结果。您的数字大于32位系统的PHP_INT_MAX
echo PHP_INT_MAX;
$d = "sdaf";
var_dump(filter_var($d, FILTER_VALIDATE_INT));
$d = PHP_INT_MAX;
var_dump(filter_var($d, FILTER_VALIDATE_INT));
var_dump(filter_var(PHP_INT_MAX, FILTER_VALIDATE_INT));
结果:
2147483647
bool(false)
int(2147483647)
int(2147483647)
答案 1 :(得分:1)
在PHP中,你可以有32位和64位整数
您可以拥有的最大32位整数2147483647
,小于您的9876543210
。
如果您的数字大于此值,则会转换为float,因此int验证失败。
如果你不想要这个,你需要有64位版本的PHP 如果你有窗户,这需要PHP 7或更高 为什么? 64位版本的PHP 5. *有一个整数总是32位的错误。
更多信息:https://secure.php.net/manual/en/language.types.integer.php