前面几篇文章对微信公众平台的开通及简单使用做了简单的介绍,但都没有涉及到实际使用中的问题,例如天气查询,公交查询,快递查询等。接下来的几篇文章将对实际生活中会经常使用到的一些功能进行开发讲解,以供读者参考。
这一篇文章将对大家每天都会关心的天气查询进行开发,例如,用户发送消息 “苏州天气”,则会返回苏州实时天气状况,以及未来两天甚至未来五天的天气状况。
首先要对用户发送过来的消息进行判断,判断消息里是否含有“天气”关键字,如果含有,则需要继续提取地区信息,然后再通过中国天气网(http://www.weather.com.cn)提供的开放API进行相关地区天气查询。
立即学习“PHP免费学习笔记(深入)”;
用户发送过来查询天气的消息的格式是固定好的,即 “地区+天气”,所以首先截取后两个字,判断是否为 “天气” 关键字。
使用php函数 mb_substr() 截取,关于该函数的用法:
从字符串开头指定位置开始;
负数 -> 从字符串结尾指定位置开始;
length
str 中要使用的最大字符数。
正数 -> 从 start string 末尾处的 length 个字符将会被漏掉(若 start 是负数则从字符串开头算起)。
encoding
encoding 参数为字符编码。如果省略,则使用内部字符编码。mb_substr() 函数根据 start 和 length
参数返回 str 中指定的部分。$str = mb_substr($keyword,-2,2,"UTF-8");
从消息的结尾数第二个字符开始截取,截取两个字符,然后加以判断是否为 “天气” 关键字。
下面进行地区提取,还是使用 mb_substr() 函数。
$str_key = mb_substr($keyword,0,-2,"UTF-8");
从消息的开头开始,截掉末尾的两个字符(天气),既得地区关键字。
然后进行判断,继而调用函数查询天气数据。
我们这里调用的是中国国家气象局提供的天气预报API接口,接口地址:http://m.weather.com.cn/data/101190401.html
URL中的数字指代城市的编号101190401(苏州),其他城市对应关系将在下面提供。
该接口返回信息比较全面,也是以json格式提供,格式如下:
weather() 函数如下:
这里include 了一个城市对应关系文件 weather_cityId.php,格式如下:
"101010100","上海"=>"101020100","苏州"=>"101190401"根据传入的城市名,得到城市代码,如果不为空,则调用中国天气网的API进行查询,返回json格式的数据,然后进行解析并返回数据,如果为空,则返回null值。
判断返回数据是否为空,若为空,则 $contentStr = "抱歉,没有查到\"".$str_key."\"的天气信息!";
若返回数据不为空,则:
$contentStr = "【".$data->weatherinfo->city."天气预报】\n".$data->weatherinfo->date_y."
".$data->weatherinfo->fchh."时发布"."\n\n实时天气\n".$data->weatherinfo->weather1."
".$data->weatherinfo->temp1." ".$data->weatherinfo->wind1."\n\n温馨提示:".
$data->weatherinfo->index_d."\n\n明天\n".$data->weatherinfo->weather2." ".
$data->weatherinfo->temp2." ".$data->weatherinfo->wind2."\n\n后天\n".
$data->weatherinfo->weather3." ".$data->weatherinfo->temp3." ".
$data->weatherinfo->wind3;
说明:
weatherinfo->city //获取城市名,这里为苏州
weatherinfo->date_y //获取日期,这里为2013年7月9日
weatherinfo->fchh //数据发布时间
weatherinfo->weather1 //实时天气
weatherinfo->temp1 //实时温度
weatherinfo->wind1 //实时风向和风速
weatherinfo->index_d //穿衣指数

handleText(handleEvent(
weather(weatherinfo->city."天气预报】\n".
weatherinfo->date_y." ".weatherinfo->fchh."时发布"."\n\n实时天气\n".
weatherinfo->weather1." ".weatherinfo->temp1." ".
weatherinfo->wind1."\n\n温馨提示:".weatherinfo->index_d."\n\n明天\n".
weatherinfo->weather2." ".weatherinfo->temp2." ".
weatherinfo->wind2."\n\n后天\n".weatherinfo->weather3." ".
weatherinfo->temp3." ".weatherinfo->responseText(FromUserName, ToUserName, 关于城市对应关系文件 weather_cityId.php,目前更新到了400多个城市,以后还会继续增加,请到QQ群213260412下载吧。
请关注卓锦苏州 微信公众帐号,卓锦苏州 基于SAE 平台开发,针对于主流的微信功能进行开发测试。
您可以关注 卓锦苏州 公众帐号进行功能测试,以及获取新的应用开发。
1. 登录微信客户端,朋友们 -> 添加朋友 -> 搜号码 -> zhuojinsz,查找并关注。
2. 扫描二维码:

卓锦苏州 功能列表。

以上就是微信公众平台开发(五) 天气预报功能开发_PHP教程的内容,更多相关内容请关注PHP中文网(www.php.cn)!











