欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

php long2ip,php 中IPV6 ip2long的问题解决办法

发布时间:2023/12/4 54 豆豆
生活随笔 收集整理的这篇文章主要介绍了 php long2ip,php 中IPV6 ip2long的问题解决办法 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

在32位系统,ip2long不能转换IPv6,但您可以转换ip2bin和bin2ip 这个函数转换为IPv4和IPv6,返回false,如果是无效的

实例程序

 代码如下复制代码

function ip2bin($ip)

{

if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false)

return base_convert(ip2long($ip),10,2);

if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) === false)

return false;

if(($ip_n = inet_pton($ip)) === false) return false;

$bits = 15; // 16 x 8 bit = 128bit (ipv6)

while ($bits >= 0)

{

$bin = sprintf("b",(ord($ip_n[$bits])));

$ipbin = $bin.$ipbin;

$bits--;

}

return $ipbin;

}

function bin2ip($bin)

{

if(strlen($bin) <= 32) // 32bits (ipv4)

return long2ip(base_convert($bin,2,10));

if(strlen($bin) != 128)

return false;

$pad = 128 - strlen($bin);

for ($i = 1; $i <= $pad; $i )

{

$bin = "0".$bin;

}

$bits = 0;

while ($bits <= 7)

{

$bin_part = substr($bin,($bits*16),16);

$ipv6 .= dechex(bindec($bin_part)).":";

$bits ;

}

return inet_ntop(inet_pton(substr($ipv6,0,-1)));

}

?>

总结

以上是生活随笔为你收集整理的php long2ip,php 中IPV6 ip2long的问题解决办法的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。