欢迎访问我的独立博客

微信公众平台开发4:天气预报

思路

首先要对用户发送过来的消息进行判断,判断消息里是否含有“天气”关键字,如果含有,则需要继续提取地区信息,然后再通过中国天气网(http://www.weather.com.cn)

提供的开放API进行查询。

实时天气信息API:http://www.weather.com.cn/data/sk/101110101.html

关键字判断与地区读取

用户发送过来查询天气的消息格式是固定好的,即 “地区+天气”,所以首先截取后两个字,判断是否为 “天气” 关键字。

我们使用php的 mb_substr()函数截取:

$str=mb_substr($keyword,-2,2,"UTF-8");

从消息的结尾第二个字符开始截取,截取两个字符,然后加以判断是否为 “天气” 关键字。

下面进行地区提取,还是使用 mb_substr() 函数。

$str_key=mb_substr($keyword,0,-2,"UTF-8");

从消息的开头开始,截掉末尾的两个字符(天气),得地区关键字。

if($str=='天气'&&!empty($str_key)){//调用函数查询天气}

调用函数查询天气

接口地址:

http://www.weather.com.cn/data/sk/101110101.html

其中URL中的数字指代城市的编号101190401(苏州)。 返回信息格式如下:

{"weatherinfo":{"city":"西安","cityid":"101110101","temp":"24","WD":"东南风","WS":"2级","SD":"62%","WSE":"2","time":"21:00","isRadar":"1","Radar":"JC_RADAR_AZ9290_JB"}}

其中:

我们通过解析JSON,获取相应城市的天气数据。

weather() 函数如下:


这里include 了一个城市对应关系文件 weather_cityId.php,格式如下:

<?php$weather_cityId=array("北京"=>"101010100","上海"=>"101020100","苏州"=>"101190401");?>

根据传入的城市名,得到城市代码


效果:

14173241490_b28ecf8709_o.png

欢迎关注我的公众号:

14356483921_55ec4132a7_o.jpg

艺搜参考

网上的天气 API 哪一个更加可靠?

http://z3sm2012.iteye.com/blog/1880973

http://www.cnblogs.com/mchina/p/3170551.html

posted @ 2016-09-30 17:41  github.com/starRTC  阅读(480)  评论(0)    收藏  举报