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

yipeiwu_com6年前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开启多进程的方法

本文实例讲述了php开启多进程的方法。分享给大家供大家参考。具体实现方法如下: 复制代码 代码如下: <?php  $IP='192.168.1.1';//Wi...

使用php语句将数据库*.sql文件导入数据库

最简单的php语句把数据库*.sql文件导入数据库 复制代码 代码如下: $sql=file_get_contents("text.sql"); //把SQL语句以字符串读入$sql $...

php禁止某ip或ip地址段访问的方法

本文实例讲述了php禁止某ip或ip地址段访问的方法,分享给大家供大家参考。具体分析如下: 因为还没有深入学习Apache和nginx 所以用PHP写了一个可以禁用地址的小程序 使用时只...

php下检测字符串是否是utf8编码的代码

 function is_utf8($string) {      return preg_ma...

php如何利用pecl安装mongodb扩展详解

php如何利用pecl安装mongodb扩展详解

前言 本文主要给大家介绍了关于php利用pecl安装mongodb扩展的相关内容,下面话不多说了,来一起看看详细的介绍吧 环境说明 php7 centos7 mongodb...