zoukankan      html  css  js  c++  java
  • 根据IP获取地址

    一、根据IP获取地址

    /**
         * 根据ip获取城市(百度)
         */
        public static function getCityByIp($ip)
        {
            $url =  "http://api.map.baidu.com/location/ip?ak=32f38c9491f2da9eb61106aaab1e9739&ip=".$ip;
            $result = file_get_contents($url);
            $result = json_decode($result);
            $result = self::objtoarr($result);
    
            $res = [];
            if (is_array($result) && isset($result['status']) && $result['status'] == 0 && isset($result['content'])) {
                $res['province'] = $result['content']['address_detail']['province'] ?? '';
                $res['city'] = $result['content']['address_detail']['city'] ?? '';
                $res['lat'] = $result['content']['point']['x'] ?? '';
                $res['lin'] = $result['content']['point']['y'] ?? '';
            }
            return $res;
        }
    /**
         * 根据ip获取城市(新浪)
         */
        public static function GetIpLookup($ip = ''){
            $res = @file_get_contents('http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=' . $ip);
            if(empty($res)) return false;
    
            $matches = [];
            preg_match('#{.+?}#', $res, $matches);
            if(!isset($matches[0])) return false;
    
            $res = json_decode($matches[0], true);
            if(isset($res['ret']) && $res['ret'] == 1){
                $res['ip'] = $ip;
                return $res;
            }
            return false;
        }
    /**
         * 根据ip获取城市(淘宝)
         */
        public static function ip_address($ip)
        {
            $durl = 'http://ip.taobao.com/service/getIpInfo.php?accessKey=alibaba-inc&ip='.$ip;
            // 初始化
            $curl = curl_init();
            // 设置url路径
            curl_setopt($curl, CURLOPT_URL, $durl);
            // 将 curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true) ;
            // 在启用 CURLOPT_RETURNTRANSFER 时候将获取数据返回
            curl_setopt($curl, CURLOPT_BINARYTRANSFER, true) ;
            // 执行
            $data = curl_exec($curl);
            // 关闭连接
            curl_close($curl);
            // 返回数据
            return $data;
    }

     二、根据地址获取经纬度

    获取秘钥(ak值):http://lbsyun.baidu.com/apiconsole/key?application=key#/home

    /**
         * 根据地址获取经纬度
         */
        public static function getLocationByAddr($addr,$city){
            //$info->result->precise //是否精确查找。1为精确查找
    
            $url="http://api.map.baidu.com/geocoder/v2/?ak=GOxtOetIDdaBsSGt9mMwpNPqoeAvv06z&output=json&address=".$addr."&city=".$city;
            $result = file_get_contents($url);
            $result = json_decode($result);
    
            $res = [];
            if($result->status == 0){//返回状态值,成功返回0
                $res['lng'] = $result->result->location->lng; //经度
                $res['lat'] = $result->result->location->lat; //纬度
            }
            return $res;
        }
    /**
         * 根据经纬度获取地址
         */
        public static function getAddrByLocation($addr,$city){
            $url = "http://api.map.baidu.com/geocoder/v2/?ak=GOxtOetIDdaBsSGt9mMwpNPqoeAvv06z&callback=renderReverse&location=28.696117,115.958458&output=json&pois=1";
            $result = file_get_contents($url);
            $result = str_replace('renderReverse&&renderReverse(', '', $result);
            $result =  substr($result, 0, strlen($result) - 1);
            $result = json_decode($result,1);
            $res = $result['result']['addressComponent'] ?? [];
    
            return $res;
        }
  • 相关阅读:
    347. 前 K 个高频元素(桶排序、堆排序)
    322. 零钱兑换 && 416. 分割等和子集(0-1背包问题)
    739. 每日温度 && 503. 下一个更大元素 II (单调栈)
    1110. 删点成林
    个人纪录
    pub get failed (server unavailable) -- attempting retry 1 in 1 second?
    python 遍历文件夹重命名
    flutter vscode 连接iphone失败
    部署以太坊合约
    Web漏洞扫描工具AppScan10介绍
  • 原文地址:https://www.cnblogs.com/finger-ghost/p/14303291.html
Copyright © 2011-2022 走看看