根据ip判断返回城市名称查询当地天气
<?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判断返回城市名称查询当地天气的更多相关文章
- 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 ...
- 通过jquery 获取用户当前所在的城市名称和IP地址
下面这段JS代码是通过jquery 结合新浪IP地址库和QQip地址库接口获取用户当前所在的城市(省份)名称. 用户当前IP地址等数据.其中当前IP是通过 QQip地址库接口获取,其他数据都是通过 新 ...
- python中通过客户端IP拿到所在城市和当地天气信息—附带项目案例
熟悉老一代QQ的小伙伴可能都知道,很早以前的QQ,鼠标滑到头像的位置,你的位置和IP会在详情页显示,那么这个是如何做到的呢?下面我们就来玩一玩这个东西 首先,需求分析: 1.拿到客户端IP 2.通过I ...
- 基于thinkphp实现根据用户ip判断地理位置并提供对应天气信息的应用
https://blog.csdn.net/MyCodeDream/article/details/46706469 我们都知道,在很多的网站都提供了给用户提供天气预报的功能,有时会发现,用户即使不输 ...
- ip获取到城市
<?phpfunction GetIP() { if ($_SERVER["HTTP_X_FORWARDED_FOR"]) $ip = $_SERVER[ ...
- C# 解析百度天气数据,Rss解析百度新闻以及根据IP获取所在城市
百度天气 接口地址:http://api.map.baidu.com/telematics/v3/weather?location=上海&output=json&ak=hXWAgbsC ...
- 获取客户端IP地址定位城市信息
获取客户端IP地址定位城市信息 1.首先获取客户端的IP地址 function getIPaddress(){ $IPaddress=''; if (isset($_SERVER)){ if (iss ...
- 获取ip地址及城市信息
大家好,今天给大家分享的是一个简单的知识获取登录用户的ip地址及城市信息,lz是一个小白,如果有哪些错误的地方 欢迎大家指出 东西很简单,直接上代码 [HttpPost] public string ...
- uniapp|微信小程序获取当前城市名称--逆地址解析
六年代码两茫茫,不思量,自难忘 6年资深前端主管一枚,只分享技术干货,项目实战经验 关注博主不迷路~ 问题 uniapp开发的小程序需要获取当前城市名称 解决步骤 看文档 当然是看uniapp文档,我 ...
随机推荐
- CSS 3学习——animation动画
以下内容根据官方文档翻译以及自己的理解整理. 1. 介绍 本方案介绍动画(animations).通过动画,开发者可以将CSS属性值的变化指定为一个随时间变化的关键帧(keyframes)的集合.在 ...
- 工欲善其事,必先利其器 之 VS2013全攻略(安装,技巧,快捷键,插件)!
如有需要WPF工具的朋友可以移步 工欲善其事,必先利其器 之 WPF篇: 随着开发轨迹来看高效WPF开发的工具和技巧 之前一篇<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATI ...
- java基础_集合List与Set接口
List接口继承了Collection的方法 当然也有自己特有的方法向指定位置添加元素 add(索引,添加的元素); 移除指定索引的元素 remove(索引) 修改指定索引的元素 set ...
- win7安装时,避免产生100m系统保留分区的办法
在通过光盘或者U盘安装Win7操作系统时,在对新硬盘进行分区时,会自动产生100m的系统保留分区.对于有洁癖的人来说,这个不可见又删不掉的分区是个苦恼.下面介绍通过diskpart消灭保留分区的办法: ...
- webapi - 模型验证
本次要和大家分享的是webapi的模型验证,讲解的内容可能不单单是做验证,但都是围绕模型来说明的:首先来吐槽下,今天下午老板为自己买了套新办公家具,看起来挺好说明老板有钱,不好的是我们干技术的又成了搬 ...
- 云瓣影音网站&&微信端(已开源)
随着该项目的发布到线上(小打小闹),即将又要开启另一段崭新的旅程.强迫自己停下来写写所学所得,个人认为总结和分享是一种很棒的学习方式.那让我们先来瞧瞧项目长的什么样.如果着急要源码的朋友,可以下拉到最 ...
- vue.js初探
前言 入手2016最火前端框架之一vue.js.大概从网上找了些资料看了下vue.js,从网上的资料来看只能惊叹其发展速度太快,让我意外的是其作者是华人的前提下作品这么受欢迎. 网上的博客和教程各种组 ...
- java时间
Calendar.getInstance().getTime() 获取当前时间(包括星期和时区 CST China Standard Time): Fri Jan 06 21:03:36 CST 2 ...
- SymmetricDS 快速和灵活的数据库复制
开始谈谈开源的SymmetricDS,谈谈实际使用中,遇到的一些问题和解决办法.持续更新: SymmetricDS 快速和灵活的数据库复制 实际使用 和 埋过的坑 (一)知识篇 SymmetricDS ...
- Linux基础介绍【第六篇】
定时任务crond介绍 crond是什么? crond是linux系统中用来定期执行命令或指定程序任务的一种服务或软件.一般情况下,安装完CentOS5/6 linux操作系统之后,默认便会启动cro ...