够意思博客够意思博客够意思博客

PHP IP转换整形(ip2long)的详解

在网站的优化中如果将IP地址转成整形来存储的话,可以大大的降低数据库的索引时间,而且还节省了很多的服务器资源。在php中,可以借助内置的预设函数 ip2long() 和 long2ip() 来实现IP地地数据类型的转换,但需要要注意的是  ip2long() 和 long2ip() 只能实现IPV4地址的处理!

php ip2long() 函数详解

ip2long:将 IPV4 地址转换成长整型数字!参数:$ip_address 为 IPV4 地址

语法:

ip2long($ip)

long2ip() 函数详解

long2ip:将长整型数字转化为标准的IPV4地址!参数:$proper_address 要转换的长整型数字

语法:

long2ip($proper_address)

ip2long() 转换后的负数问题

当ip地址比较大时,转换后的整数会有超过最大整形范围(也就是溢出)的情况。而超过的部份就会成为负数,为避免此情况的出现我们需要对 ip2long() 的结果进行处理一下!

解决方法如下

/**
*  使用ip2long() 转换后的负数问题
*/
public function index()
{
   $access_ip ='14.205.4.147'; //获取客户端IP

   //处理方法一
   $strip = bindec(decbin(ip2long($access_ip))); //decbin函数将十进制转换为二进制,bindec函数将二进制转换为整形。
   $ip    = long2ip($strip);

   //处理方法二
   $strip_1 = sprintf("%u", ip2long($access_ip));
   $ip_1    = long2ip($strip_1);
   $this->writeJson(200, [$ip, $strip, $ip_1, $strip_1], "{$access_ip}IP整型互转");
   return false;
}

执行输出结果

{
"code": 200,
"result": ["14.205.4.147", 248317075, "14.205.4.147", "248317075"],
"msg": "14.205.4.147IP整型互转"
}


本文为够意思原创文章,转载无需和我联系,但请注明来自够意思博客blog.go1s.cn:够意思博客 » PHP IP转换整形(ip2long)的详解

加载中~