博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ip转城市接口,ip转省份接口,ip转城市PHP方法
阅读量:4949 次
发布时间:2019-06-11

本文共 4787 字,大约阅读时间需要 15 分钟。

新浪接口(速度快)

$url = 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip='.$ip;$arr = json_decode(file_get_contents($url),true);

淘宝接口(特别慢)

$url = 'http://ip.taobao.com/service/getIpInfo.php?ip='.$ip;$arr = json_decode(file_get_contents($url),true);

 

ip转城市PHP的方法

function convertip($ip) {       $ip1num = 0;      $ip2num = 0;      $ipAddr1 ="";      $ipAddr2 ="";      $dat_path = './QQWry.Dat';              if(!preg_match("/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/", $ip)) {         return 'IP Address Error';       }        if(!$fd = @fopen($dat_path, 'rb')){         return 'IP date file not exists or access denied';       }        $ip = explode('.', $ip);       $ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3];        $DataBegin = fread($fd, 4);       $DataEnd = fread($fd, 4);       $ipbegin = implode('', unpack('L', $DataBegin));       if($ipbegin < 0) $ipbegin += pow(2, 32);       $ipend = implode('', unpack('L', $DataEnd));       if($ipend < 0) $ipend += pow(2, 32);       $ipAllNum = ($ipend - $ipbegin) / 7 + 1;       $BeginNum = 0;       $EndNum = $ipAllNum;        while($ip1num>$ipNum || $ip2num<$ipNum) {           $Middle= intval(($EndNum + $BeginNum) / 2);           fseek($fd, $ipbegin + 7 * $Middle);           $ipData1 = fread($fd, 4);           if(strlen($ipData1) < 4) {               fclose($fd);               return 'System Error';           }          $ip1num = implode('', unpack('L', $ipData1));           if($ip1num < 0) $ip1num += pow(2, 32);               if($ip1num > $ipNum) {             $EndNum = $Middle;             continue;           }           $DataSeek = fread($fd, 3);           if(strlen($DataSeek) < 3) {             fclose($fd);             return 'System Error';           }           $DataSeek = implode('', unpack('L', $DataSeek.chr(0)));           fseek($fd, $DataSeek);           $ipData2 = fread($fd, 4);           if(strlen($ipData2) < 4) {             fclose($fd);             return 'System Error';           }           $ip2num = implode('', unpack('L', $ipData2));           if($ip2num < 0) $ip2num += pow(2, 32);            if($ip2num < $ipNum) {               if($Middle == $BeginNum) {                 fclose($fd);                 return 'Unknown';               }               $BeginNum = $Middle;           }       }        $ipFlag = fread($fd, 1);       if($ipFlag == chr(1)) {           $ipSeek = fread($fd, 3);           if(strlen($ipSeek) < 3) {               fclose($fd);               return 'System Error';           }           $ipSeek = implode('', unpack('L', $ipSeek.chr(0)));           fseek($fd, $ipSeek);           $ipFlag = fread($fd, 1);       }       if($ipFlag == chr(2)) {           $AddrSeek = fread($fd, 3);           if(strlen($AddrSeek) < 3) {               fclose($fd);               return 'System Error';           }           $ipFlag = fread($fd, 1);           if($ipFlag == chr(2)) {               $AddrSeek2 = fread($fd, 3);               if(strlen($AddrSeek2) < 3) {                   fclose($fd);                   return 'System Error';               }               $AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));               fseek($fd, $AddrSeek2);           } else {               fseek($fd, -1, SEEK_CUR);           }           while(($char = fread($fd, 1)) != chr(0))           $ipAddr2 .= $char;           $AddrSeek = implode('', unpack('L', $AddrSeek.chr(0)));           fseek($fd, $AddrSeek);           while(($char = fread($fd, 1)) != chr(0))           $ipAddr1 .= $char;       } else {           fseek($fd, -1, SEEK_CUR);           while(($char = fread($fd, 1)) != chr(0))           $ipAddr1 .= $char;           $ipFlag = fread($fd, 1);           if($ipFlag == chr(2)) {               $AddrSeek2 = fread($fd, 3);               if(strlen($AddrSeek2) < 3) {                 fclose($fd);                 return 'System Error';               }               $AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));               fseek($fd, $AddrSeek2);           } else {               fseek($fd, -1, SEEK_CUR);           }           while(($char = fread($fd, 1)) != chr(0)){               $ipAddr2 .= $char;           }       }       fclose($fd);        if(preg_match('/http/i', $ipAddr2)) {           $ipAddr2 = '';       }    // $ipAddr1河北省石家庄市 $ipAddr2联通    // $ipaddr = "$ipAddr1 $ipAddr2";       $ipaddr = $ipAddr1;    $ipaddr = preg_replace('/CZ88.NET/is', '', $ipaddr);       $ipaddr = preg_replace('/^s*/is', '', $ipaddr);       $ipaddr = preg_replace('/s*$/is', '', $ipaddr);       if(preg_match('/http/i', $ipaddr) || $ipaddr == '') {           $ipaddr = 'Unknown';       }       return $ipaddr;   }

文件下载地址:

链接: 密码:txp3

转http://blog.csdn.net/aaron_luchen/article/details/6637799

转载于:https://www.cnblogs.com/wangzhaobo/p/8135029.html

你可能感兴趣的文章
LOJ #2116 Luogu P3241「HNOI2015」开店
查看>>
接口测试工具postman
查看>>
jQuery取得select选择的文本与值
查看>>
UIPageControl自定义点的颜色
查看>>
逻辑卷管理
查看>>
驱动绕过360的KiFastCallEntry钩子
查看>>
树是一种特殊的图
查看>>
Regex Golf练习笔记(1)
查看>>
LeetCode-Swap Nodes in Pairs
查看>>
windows下安装ffmpeg(php视频处理扩展)
查看>>
CDOJ 1259 昊昊爱运动 II bitset+线段树
查看>>
SpringBoot自定义注解、AOP打印日志
查看>>
python_15_os
查看>>
Common工具类的验证码类的使用(未实现验证)
查看>>
使用Jsoup获取网页内容超时设置
查看>>
img 的 3px
查看>>
Codeforces Round #384 (Div. 2) D. Chloe and pleasant prizes(树形DP)
查看>>
flex布局中flex-basis的理解
查看>>
93. Restore IP Addresses
查看>>
46. Permutations
查看>>