ip2long出现负数的解决方案

前言

  在PHP开发中,有时候会遇到一些需求,例如:获取用户的IP地址,并存到数据库当中。一般做法是将IP地址转变为整型存入数据库当中,至于如何将IP地址转成整型,有很多做法^1,而我习惯用ip2long这个函数来处理,当然你也可以自己写一个更好的函数。

  当然ip2long转化的IP地址并不是很完美,某些地址存在BUG,就是转换后的地址会变成一个负数(原因是溢出了)。

解决方案

  最简单的方法是使用decbinip2long的返回值转成二进制,然后再通过bindec将结果转回十进制。(官方也推荐过另一个解决办法,在官方手册中有说明)

1
2
3
<?PHP
echo bindec(decbin(ip2long($ip)));//也可以 printf('%u', ip2long($ip));
?>
------ 本文结束 ------

版权声明

yoGa's Blog by yoga lee is licensed under a Creative Commons BY-NC-ND 4.0 International License.
yoga lee创作并维护的yoGa's Blog采用创作共用保留署名-非商业-禁止演绎4.0国际许可证
本文首发于yoGa's Bloghttp://yoga.ibye.cn ),版权所有,若需转载请注明出处,谢谢支持。