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(“%08b”,(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 ip2long 32 64位,php 中IPV6 ip2long的问题解决办法_PHP教程的全部内容,更多相关php内容请搜索靠谱客的其他文章。
发表评论 取消回复