php专区

 首页 > php专区 > PHP应用 > php函数大全 > php 中IPV6 ip2long的问题解决办法 - php函数

php 中IPV6 ip2long的问题解决办法 - php函数

分享到:
【字体:
导读:
          在32位系统,ip2long不能转换IPv6,但您可以转换ip2bin和bin2ip,这个函数转换为IPv4和IPv6,返回false,如果是无效的,实例程序:?phpfunctionip...

php 中IPV6 ip2long的问题解决办法

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

  1. function ip2bin($ip)  
  2. {  
  3.     if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false)  
  4.         return base_convert(ip2long($ip),10,2);  
  5.     if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) === false)  
  6.         return false;  
  7.     if(($ip_n = inet_pton($ip)) === false) return false;  
  8.     $bits = 15; // 16 x 8 bit = 128bit (ipv6)  
  9.     while ($bits >= 0)  
  10.     {  
  11.         $bin = sprintf("%08b",(ord($ip_n[$bits])));  
  12.         $ipbin = $bin.$ipbin;  
  13.         $bits--;  
  14.     }  
  15.     return $ipbin;  
  16.  
  17. function bin2ip($bin)  
  18. {  
  19.    if(strlen($bin) <= 32) // 32bits (ipv4)  
  20.        return long2ip(base_convert($bin,2,10));  
  21.    if(strlen($bin) != 128)  
  22.        return false;  
  23.    $pad = 128 - strlen($bin);  
  24.    for ($i = 1; $i <= $pad$i++)  
  25.    {  
  26.        $bin = "0".$bin;  
  27.    }  
  28.    $bits = 0;  
  29.    while ($bits <= 7)  
  30.    {  
  31.        $bin_part = substr($bin,($bits*16),16);  
  32.        $ipv6 .= dechex(bindec($bin_part)).":";  
  33.        $bits++;  
  34.    }  
  35.    return inet_ntop(inet_pton(substr($ipv6,0,-1)));  
  36. }  
  37. ?> 
分享到:
php中file_get_contents获取网页乱码解决...
php中file_get_contents获取网页乱码解决办法 昨天我在做一个简单采集功能时我直接使用了file_get_contents函数,但是采集有些网站没问题,采集有些网筹码了,后来分析出现乱码是服务器开启了gzip压缩功能,知道原因了我们就好办了,先百度了一下得出是可以改用curl操作,curl解决代码如下: ...
file_get_contents不能获取带端口的网址 ...
file_get_contents不能获取带端口的网址 先们来了解file_get_contents() 函数,官方介绍说它是把整个文件读入一个字符串中,例子:   输出:This is a test file with test text.同样此函数还可以用于获取远程服务器上的内容:file_get_contents(&#039;http://www.phpfensi.com&#039;...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……