国产探花免费观看_亚洲丰满少妇自慰呻吟_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. ?> 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 连云港市| 垦利县| 德阳市| 章丘市| 合作市| 运城市| 鄂托克前旗| 新疆| 云浮市| 伊吾县| 营山县| 阜新| 永靖县| 呼图壁县| 大同市| 苗栗县| 河北区| 武乡县| 漳平市| 汝阳县| 济宁市| 万荣县| 桃园县| 潼关县| 平乐县| 会同县| 福州市| 三河市| 封开县| 如皋市| 瓮安县| 大洼县| 英德市| 五台县| 卓资县| 界首市| 二连浩特市| 渝中区| 璧山县| 云和县| 天峻县|