php 接口获取公网ip并获取天气接口信息

Posted 张瀚文的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 接口获取公网ip并获取天气接口信息相关的知识,希望对你有一定的参考价值。

<?php
    function get_ip(){
        //判断服务器是否允许$_SERVER
        if(isset($_SERVER)){    
            if(isset($_SERVER[‘HTTP_X_FORWARDED_FOR‘])){
                $realip = $_SERVER[‘HTTP_X_FORWARDED_FOR‘];
            }elseif(isset($_SERVER[‘HTTP_CLIENT_IP‘])) {
                $realip = $_SERVER[‘HTTP_CLIENT_IP‘];
            }else{
                $realip = $_SERVER[‘REMOTE_ADDR‘];
            }
        }else{
            //不允许就使用getenv获取  
            if(getenv("HTTP_X_FORWARDED_FOR")){
                  $realip = getenv( "HTTP_X_FORWARDED_FOR");
            }elseif(getenv("HTTP_CLIENT_IP")) {
                  $realip = getenv("HTTP_CLIENT_IP");
            }else{
                  $realip = getenv("REMOTE_ADDR");
            }
        }

        return $realip;
    }  
    
    function getIp(){
        $ip = get_ip();
        if($ip==‘127.0.0.1‘){
            $myIp = ‘myip‘;
        } 
        //初始化
        $curl = curl_init();
        //设置抓取的url
        curl_setopt($curl, CURLOPT_URL, ‘http://ip.taobao.com/service/getIpInfo.php?ip=‘.$myIp);
        //设置头文件的信息作为数据流输出
        curl_setopt($curl, CURLOPT_HEADER, 0);
        //设置获取的信息以文件流的形式返回,而不是直接输出。
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        //执行命令
        curl_multi_getcontent( $curl );
        $data = curl_exec($curl);
        //关闭URL请求
        curl_close($curl);
        
        //显示获得的数据
        return json_decode($data,true);
    }
    
    function weather($chengshi){
        $url = ‘http://wthrcdn.etouch.cn/weather_mini?city=‘.urlencode($chengshi);
        $html = file_get_contents($url);
        $jsondata = gzdecode($html);
        $data=json_decode($jsondata,true);

        $arr=array();
        $arr[‘chengshi‘]=$data[‘data‘][‘city‘];
        $dangtian=$data[‘data‘][‘forecast‘][0];
        $arr[‘gaowen‘]= str_replace("高温 ",null,$dangtian[‘high‘]);
        $arr[‘diwen‘]= str_replace("低温 ",null,$dangtian[‘low‘]);
        $arr[‘tianqi‘]=$dangtian[‘type‘];
        return $arr;
    }
    
    $area = getIp();
    if(isset($area[‘data‘][‘city‘])){
        $city = $area[‘data‘][‘city‘];
        $weather = weather($city);
        print_r($weather);
    }

 

以上是关于php 接口获取公网ip并获取天气接口信息的主要内容,如果未能解决你的问题,请参考以下文章

IP定位,天气接口

Java通过webservice接口获取天气信息

php获取客户端IP,国家,省份,地区,ISP等信息

php获取客户端IP,国家,省份,地区,ISP等信息

API获取自己的公网IP地址 API查询IP信息

android端免费获取天气信息的服务器接口有么