ip转城市接口,ip转省份接口,ip转城市PHP方法

新浪接口(速度快)

$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;   
}

文件下载地址:

链接:https://pan.baidu.com/s/1gfD5uzL 密码:txp3

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MySQL城市IP库是一种基于MySQL数据库的工具,用于存储和查询IP地址与城市地理位置之间的对应关系。该工具可以实现IP地址的定位,并返回对应的城市信息,方便用户进行相关统计分析或应用开发。 该工具的优点是存储和查询速度比较快,可以应用于各种规模的应用中,且可以通过一定算法来优化查询速度。此外,该工具经过完善的数据处理,可以实现较高的准确度和灵活性。例如,可以根据不同的需求,将城市划分为不同的级别,进行相关的统计和分析。 同时,该工具也存在一些局限性。例如,数据的更新和维护需要一定的技术支持,因为IP地址的归属信息不断发生变化,需要及时更新数据库。此外,在一些应用场景中,也存在一定误差,例如某些IP地址可能难以精确定位到城市,或者存在一些跨区域的情况。 总体来讲,MySQL城市IP库是一种有助于提高业务应用效率和开发效率的工具。但是,在使用过程中需要注意数据的更新和维护,以及误差问题的处理。 ### 回答2: MySQL城市IP库是一种用于将IP地址与地理位置信息相匹配的数据库,它可以用于各种应用程序和网站,以便提供更准确的地理位置信息。 该库包含了各个城市的经纬度坐标、邮政编码、国家、省份城市等信息,并且可以根据IP地址查询得到对应的地理位置信息。这种库的构建需要大量的数据和算法支持,需要不断更新和维护以保证数据的准确性和完整性。 MySQL城市IP库可以应用到许多场景中,如广告投放、网络安全、电商、物流等行业。例如,在广告投放中,可以通过IP地址得到用户的地理位置信息,从而制定更为精准的投放策略。在电商中,可以通过IP地址了解用户所在地区的物流情况,从而提供更好的物流服务体验。在物流行业中,则可以借助IP地址了解配送地区,制定更为高效的物流路线和策略。 总之,MySQL城市IP库提供了一个有效的解决方案,可以帮助用户快速且准确地获取IP地址对应的地理位置信息,从而为各种应用场景提供更为全面和便捷的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值