FILTER_VALIDATE_INT始终返回false

时间:2017-01-19 10:41:38

标签: php xampp filter-var

我正在尝试使用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)

2 个答案:

答案 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