我正在尝试使用FILTER_VALIDATE_INT验证整数。它在ubuntu服务器上运行良好,但在本地win 10 xampp系统上返回false。
这是代码
案例1:
$d = "sdaf";
var_dump(filter_var($d, FILTER_VALIDATE_INT));执行部分:bool(假)
案例2:
$d = "9876543210";
var_dump(filter_var($d, FILTER_VALIDATE_INT));执行部分:bool(假)
案例3:
var_dump(filter_var(9876543210, FILTER_VALIDATE_INT));执行部分:bool(假)
在服务器上:
var_dump(filter_var(9876543210, FILTER_VALIDATE_INT));执行部分: int(9876543210)
发布于 2017-01-19 10:48:40
您是在运行32位Windows,还是在64位窗口上运行32位PHP,以及在64位服务器上运行?
我想你可能是。如果您运行这个程序,您将得到正确的结果。您的数字比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)发布于 2017-01-19 10:49:33
在PHP中,可以有32位和64位整数。
您可以拥有的最大32位整数,它是2147483647,它小于您的9876543210。
如果您有一个更大的数字,则它将转换为浮点数,因此int验证失败。
如果您不想这样做,您需要有一个64位版本的PHP。
如果您有windows,则需要PHP 7或更高版本。
为什么? PHP 5.*的64位版本存在一个整数总是32位的错误。
更多信息:https://secure.php.net/manual/en/language.types.integer.php
https://stackoverflow.com/questions/41739750
复制相似问题