国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php 中IPV6 ip2long的問題解決辦法

2024-09-04 11:47:55
字體:
來源:轉載
供稿:網友

在32位系統,ip2long不能轉換IPv6,但您可以轉換ip2bin和bin2ip,這個函數轉換為IPv4和IPv6,返回false,如果是無效的,實例程序:

  1. <?php  
  2. function ip2bin($ip)  
  3. {  
  4.     if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false)  
  5.         return base_convert(ip2long($ip),10,2);  
  6.     if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) === false)  
  7.         return false;  
  8.     if(($ip_n = inet_pton($ip)) === false) return false;  
  9.     $bits = 15; // 16 x 8 bit = 128bit (ipv6)  
  10.     while ($bits >= 0)  
  11.     {  
  12.         $bin = sprintf("%08b",(ord($ip_n[$bits])));  
  13.         $ipbin = $bin.$ipbin;  
  14.         $bits--;  
  15.     }  
  16.     return $ipbin;  
  17.  
  18. function bin2ip($bin)  
  19. {  
  20.    if(strlen($bin) <= 32) // 32bits (ipv4)  
  21.        return long2ip(base_convert($bin,2,10));  
  22.    if(strlen($bin) != 128)  
  23.        return false;  
  24.    $pad = 128 - strlen($bin);  
  25.    for ($i = 1; $i <= $pad$i++)  
  26.    {  
  27.        $bin = "0".$bin;  
  28.    }  
  29.    $bits = 0;  
  30.    while ($bits <= 7)  
  31.    {  
  32.        $bin_part = substr($bin,($bits*16),16);  
  33.        $ipv6 .= dechex(bindec($bin_part)).":";  
  34.        $bits++;  
  35.    }  
  36.    return inet_ntop(inet_pton(substr($ipv6,0,-1)));  
  37. }  
  38. ?> 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 图木舒克市| 康保县| 罗田县| 漠河县| 武定县| 呼和浩特市| 江西省| 梅州市| 台州市| 江津市| 江都市| 濮阳市| 凌源市| 开江县| 临武县| 确山县| 柘城县| 平江县| 湖南省| 青州市| 分宜县| 湾仔区| 邹平县| 静乐县| 且末县| 新郑市| 武汉市| 三原县| 桦南县| 广东省| 奉新县| 浙江省| 安吉县| 鲁山县| 左云县| 陇南市| 隆昌县| 广饶县| 祁东县| 三门峡市| 吉木乃县|