探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法

yipeiwu_com7年前PHP代码库

【造成原因】:Because PHP's integer type is signed, and many IP addresses will result in negative integers.
【解决办法】:其官方手册中提到,可以“you need to use the "%u" formatter of sprintf() or printf() to get the string representation of the unsigned IP address”
即,printf( '%u', ip2long( 'IP地址' ) );
或者将其先转换为二进制然后在转换为十进制,bindec( decbin( ip2long( 'IP地址' ) ) );
【测试】
$strIp = '182.118.0.0';

echo ip2long($strIp); //此时输出的-1233780736
echo '<br/>';
echo bindec( decbin( ip2long( $strIp ) ) ); // 输出3061186560,与MySQL函数输出一致~

【注】:
number bindec ( string $binary_string ); //二进制转换为十进制
string decbin ( int $number ); //十进制转换为二进制

以上这篇探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【宜配屋www.yipeiwu.com】。

相关文章

PHP的curl实现get,post和cookie(实例介绍)

类似于dreamhost这类主机服务商,是显示fopen的使用 的。使用php的curl可以实现支持FTP、FTPS、HTTP HTPPS SCP SFTP TFTP TELNET DI...

php解决DOM乱码的方法示例代码

前言 DOM是php比较新的xml和html处理类,可以像javascript那样方便的操作DOM树,网上更多的是介绍它处理XML的情况,今天这篇文章就介绍下php解决DOM乱码的方法,...

php一行代码获取文件后缀名实例分析

本文实例讲述了php一行代码获取文件后缀名的方法。分享给大家供大家参考。具体方法分析如下: php中一行代码获取文件后缀名的方法要结合很多的函数了,我们这个有点像asp中的函数了,下面来...

PHP学习之字符串比较和查找

1. 字符串比较 在PHP中,可以用==(双等号)或者 ===(三等号)来比较字符串。两者的区别是双等号不比较类型,三等号会比较类型,它不转换类型;用双等号进行比较时,如果等号左右两边有...

php中截取中文字符串的代码小结

字符串截取是一个非常常见的编程任务,而往往带中文的字符串截取会经常用到。虽然不难,但是自己写函数实现又耗费时间,这里介绍一个比较好用的字符串截取函数,能够胜任基本的需求了。 1. 截取G...