<?php
header("content-type:text/html;charset=utf-8");
date_default_timezone_set("Asia/Shanghai");
error_reporting(0);
// 根据IP判断城市
$user_ip = $_SERVER['REMOTE_ADDR'];
$url ="http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=$user_ip";
$address = file_get_contents($url);
$address_arr = json_decode($address);  //返回对象,需要转换为数组

//以上海为例

stdClass Object
  (
  [ret] => 1
  [start] => -1
  [end] => -1
  [country] => 中国
  [province] => 上海
  [city] => 上海
  [district] =>
  [isp] =>
  [type] =>
  [desc] =>
  )

function object_array($array){
  if(is_object($array)){
    $array = (array)$array;
  }
  if(is_array($array)){
    foreach($array as $key=>$value){
      $array[$key] = object_array($value);
    }
  }
  return $array;
}

//通过该函数转化为数组
$address_arr = object_array($address_arr);

// print_r($address_arr);

Array
  (
  [ret] => 1
  [start] => -1
  [end] => -1
  [country] => 中国
  [province] => 上海
  [city] => 上海
  [district] =>
  [isp] =>
  [type] =>
  [desc] =>
  )

$city = $address_arr["city"];

//输出为上海,获得城市通过百度天气API查询当地天气

$con=file_get_contents("http://api.map.baidu.com/telematics/v3/weather?location=$city&output=json&ak=spmMww7Eoqcmf3FXbnLyDUwL");  //注意ak值需要进入百度接口注册,附上地址:http://lbsyun.baidu.com/apiconsole/key
$con = json_decode($con);

print_r($con);

stdClass Object
  (
  [error] => 0
  [status] => success
  [date] => 2016-09-23
  [results] => Array
  (
  [0] => stdClass Object
  (
  [currentCity] => 上海
  [pm25] => 42
  [index] => Array
  (
  [0] => stdClass Object
  (
  [title] => 穿衣
  [zs] => 热
  [tipt] => 穿衣指数
  [des] => 天气热,建议着短裙、短裤、短薄外套、T恤等夏季服装。
  )
   
  [1] => stdClass Object
  (
  [title] => 洗车
  [zs] => 较适宜
  [tipt] => 洗车指数
  [des] => 较适宜洗车,未来一天无雨,风力较小,擦洗一新的汽车至少能保持一天。
  )
   
  [2] => stdClass Object
  (
  [title] => 旅游
  [zs] => 适宜
  [tipt] => 旅游指数
  [des] => 天气较好,但丝毫不会影响您出行的心情。温度适宜又有微风相伴,适宜旅游。
  )
   
  [3] => stdClass Object
  (
  [title] => 感冒
  [zs] => 少发
  [tipt] => 感冒指数
  [des] => 各项气象条件适宜,无明显降温过程,发生感冒机率较低。
  )
   
  [4] => stdClass Object
  (
  [title] => 运动
  [zs] => 较适宜
  [tipt] => 运动指数
  [des] => 天气较好,户外运动请注意防晒。推荐您进行室内运动。
  )
   
  [5] => stdClass Object
  (
  [title] => 紫外线强度
  [zs] => 弱
  [tipt] => 紫外线强度指数
  [des] => 紫外线强度较弱,建议出门前涂擦SPF在12-15之间、PA+的防晒护肤品。
  )
   
  )
   
  [weather_data] => Array
  (
  [0] => stdClass Object
  (
  [date] => 周五 09月23日 (实时:26℃)
  [dayPictureUrl] => http://api.map.baidu.com/images/weather/day/duoyun.png
  [nightPictureUrl] => http://api.map.baidu.com/images/weather/night/duoyun.png
  [weather] => 多云
  [wind] => 东风微风
  [temperature] => 27 ~ 21℃
  )
   
  [1] => stdClass Object
  (
  [date] => 周六
  [dayPictureUrl] => http://api.map.baidu.com/images/weather/day/duoyun.png
  [nightPictureUrl] => http://api.map.baidu.com/images/weather/night/duoyun.png
  [weather] => 多云
  [wind] => 东风微风
  [temperature] => 28 ~ 23℃
  )
   
  [2] => stdClass Object
  (
  [date] => 周日
  [dayPictureUrl] => http://api.map.baidu.com/images/weather/day/duoyun.png
  [nightPictureUrl] => http://api.map.baidu.com/images/weather/night/yin.png
  [weather] => 多云转阴
  [wind] => 东风微风
  [temperature] => 28 ~ 23℃
  )
   
  [3] => stdClass Object
  (
  [date] => 周一
  [dayPictureUrl] => http://api.map.baidu.com/images/weather/day/duoyun.png
  [nightPictureUrl] => http://api.map.baidu.com/images/weather/night/yin.png
  [weather] => 多云转阴
  [wind] => 东北风微风
  [temperature] => 29 ~ 25℃
  )
   
  )
   
  )
   
  )
   
  )

$arr = object_array($con);  //继续转成数组操作

$detail = $arr["results"][0]["weather_data"];
$city = $arr["results"][0]["currentCity"];

print_r($detail);

Array
  (
  [0] => Array
  (
  [date] => 周五 09月23日 (实时:26℃)
  [dayPictureUrl] => http://api.map.baidu.com/images/weather/day/duoyun.png
  [nightPictureUrl] => http://api.map.baidu.com/images/weather/night/duoyun.png
  [weather] => 多云
  [wind] => 东风微风
  [temperature] => 27 ~ 21℃
  )
   
  [1] => Array
  (
  [date] => 周六
  [dayPictureUrl] => http://api.map.baidu.com/images/weather/day/duoyun.png
  [nightPictureUrl] => http://api.map.baidu.com/images/weather/night/duoyun.png
  [weather] => 多云
  [wind] => 东风微风
  [temperature] => 28 ~ 23℃
  )
   
  [2] => Array
  (
  [date] => 周日
  [dayPictureUrl] => http://api.map.baidu.com/images/weather/day/duoyun.png
  [nightPictureUrl] => http://api.map.baidu.com/images/weather/night/yin.png
  [weather] => 多云转阴
  [wind] => 东风微风
  [temperature] => 28 ~ 23℃
  )
   
  [3] => Array
  (
  [date] => 周一
  [dayPictureUrl] => http://api.map.baidu.com/images/weather/day/duoyun.png
  [nightPictureUrl] => http://api.map.baidu.com/images/weather/night/yin.png
  [weather] => 多云转阴
  [wind] => 东北风微风
  [temperature] => 29 ~ 25℃
  )
   
  )

//获得天气数据,根据自己需求进行调整

?>

根据ip判断返回城市名称查询当地天气的更多相关文章

  1. ip获取所在城市名称等信息接口,及函数

    函数: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 ...

  2. 通过jquery 获取用户当前所在的城市名称和IP地址

    下面这段JS代码是通过jquery 结合新浪IP地址库和QQip地址库接口获取用户当前所在的城市(省份)名称. 用户当前IP地址等数据.其中当前IP是通过 QQip地址库接口获取,其他数据都是通过 新 ...

  3. python中通过客户端IP拿到所在城市和当地天气信息—附带项目案例

    熟悉老一代QQ的小伙伴可能都知道,很早以前的QQ,鼠标滑到头像的位置,你的位置和IP会在详情页显示,那么这个是如何做到的呢?下面我们就来玩一玩这个东西 首先,需求分析: 1.拿到客户端IP 2.通过I ...

  4. 基于thinkphp实现根据用户ip判断地理位置并提供对应天气信息的应用

    https://blog.csdn.net/MyCodeDream/article/details/46706469 我们都知道,在很多的网站都提供了给用户提供天气预报的功能,有时会发现,用户即使不输 ...

  5. ip获取到城市

    <?phpfunction GetIP() {    if ($_SERVER["HTTP_X_FORWARDED_FOR"])        $ip = $_SERVER[ ...

  6. C# 解析百度天气数据,Rss解析百度新闻以及根据IP获取所在城市

    百度天气 接口地址:http://api.map.baidu.com/telematics/v3/weather?location=上海&output=json&ak=hXWAgbsC ...

  7. 获取客户端IP地址定位城市信息

    获取客户端IP地址定位城市信息 1.首先获取客户端的IP地址 function getIPaddress(){ $IPaddress=''; if (isset($_SERVER)){ if (iss ...

  8. 获取ip地址及城市信息

    大家好,今天给大家分享的是一个简单的知识获取登录用户的ip地址及城市信息,lz是一个小白,如果有哪些错误的地方  欢迎大家指出 东西很简单,直接上代码 [HttpPost] public string ...

  9. uniapp|微信小程序获取当前城市名称--逆地址解析

    六年代码两茫茫,不思量,自难忘 6年资深前端主管一枚,只分享技术干货,项目实战经验 关注博主不迷路~ 问题 uniapp开发的小程序需要获取当前城市名称 解决步骤 看文档 当然是看uniapp文档,我 ...

随机推荐

  1. 消息队列 Kafka 的基本知识及 .NET Core 客户端

    前言 最新项目中要用到消息队列来做消息的传输,之所以选着 Kafka 是因为要配合其他 java 项目中,所以就对 Kafka 了解了一下,也算是做个笔记吧. 本篇不谈论 Kafka 和其他的一些消息 ...

  2. Windows 7上执行Cake 报错原因是Powershell 版本问题

    在Windows 7 SP1 电脑上执行Cake的的例子 http://cakebuild.net/docs/tutorials/getting-started ,运行./Build.ps1 报下面的 ...

  3. Linux下Nodejs安装(完整详细)

    之前安装过windows下以及Mac下的node,感觉还是很方便的,不成想今天安装linux下的坑了老半天,特此记录. 首先去官网下载代码,这里一定要注意安装分两种,一种是Source Code源码, ...

  4. 前端学HTTP之字符集

    前面的话 HTTP报文中可以承载以任何语言表示的内容,就像它能承载图像.影片或任何类型的媒体那样.对HTTP来说,实体主体只是二进制信息的容器而已.为了支持国际性内容,服务器需要告知客户端每个文档的字 ...

  5. CRL快速开发框架系列教程十三(嵌套查询)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  6. 玩转spring boot——开篇

    很久没写博客了,而这一转眼就是7年.这段时间并不是我没学习东西,而是园友们的技术提高的非常快,这反而让我不知道该写些什么.我做程序已经有十几年之久了,可以说是彻彻底底的“程序老炮”,至于技术怎么样?我 ...

  7. 个人网站对xss跨站脚本攻击(重点是富文本编辑器情况)和sql注入攻击的防范

    昨天本博客受到了xss跨站脚本注入攻击,3分钟攻陷--其实攻击者进攻的手法很简单,没啥技术含量.只能感叹自己之前竟然完全没防范. 这是数据库里留下的一些记录.最后那人弄了一个无限循环弹出框的脚本,估计 ...

  8. MySQL 系列(二) 你不知道的数据库操作

    第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 本章内容: 查看\创建\使用\删除 数据库 用户管理及授权实战 局域网 ...

  9. 港真,到底应该选择OA还是BPM?

    越来越多企业意识到流程管理的重要性,但是,选择OA还是BPM,却让他们产生了选择困难症. 一方面,企业皆注重流程的高效运转,最好内外部的业务都能用一个系统来解决.所有流程一天就能上线什么的,那就更好啦 ...

  10. svn常用命令

    1.新建版本库 [root@localhost repos]# mkdir -p project [root@localhost repos]# svnadmin create project [ro ...