在php编程中,将IP转换成整型的函数ip2long()容易出现一个问题:在IP比较大的情况下,会变成负数。
例如:
复制代码 代码示例:
<?php
$ip = "192.168.1.2";
$ip_n = ip2long($ip);
echo $ip_n; //得到 -1062731518
?>
原因:
IP转换成的整型值太大超出了整型的范围,所以变成负数。
需要做如下的修改,修改为$ip_n = bindec(decbin(ip2long($ip)))即可得到无符号的整型数。
例如:
复制代码 代码示例:
<?php
$ip = "192.168.1.2";
$ip_n = bindec(decbin(ip2long($ip)));
//by
www.jb200.com
echo $ip_n; //得到 3232235778
?>