微信开发详解:[4]微信天气预报
1、数据源:要做一个微信查天气的平台,首先要能够取得天气数据,目前我们一般在中国气象网上获取数据。这里有全面准确的天气信息。
![微信开发详解:[4]微信天气预报](https://exp-picture.cdn.bcebos.com/7c84d1672b5fd546faaac9a17fd0b503c9d22496.jpg)
2、数据获取:一般使用file_get_contents()函数去请求中国气象网的http://m.weather.com.cn/data/101110101.html这个链接(这个是西安的天气),不过仅限于学习使用,商业用途请主动联系中国气象网,否则后果自负。示例:<?php$url=http://m.weather.com.cn/data/101110101.html$str=file_get_contents($url);echo $str;?>
![微信开发详解:[4]微信天气预报](https://exp-picture.cdn.bcebos.com/f591ab03c8d246fe4273b336b8bf3bef344f1e96.jpg)
3、函数学习:如上,获取到数据后是一个json的数据函数json_decode() 的功能时将json数据格式转换为数组。示例:<?php$url=http://m.weather.com.cn/data/101110101.html$str=file_get_contents($url);$aa=json_decode($str,true);print_r($aa);?>结果如图,可见json的数据变成了一个二维数组。
![微信开发详解:[4]微信天气预报](https://exp-picture.cdn.bcebos.com/32fe25ef354f50b8bf03d96edc4afa32929c1896.jpg)
4、编写数据获取的函数:在数据获取的链接中,最后面的一串数字是城市代码。所以我们要胆咣骜岱编写一个通用的函数,只要传一个城市代码的参数就可以返回这个城市的天气情况,为防止出错,我们让默认酴兑镗笄查询的是西安的天气。function weather($code="101110101"){$url="http://m.weather.com.cn/data/".$code.".html";$str=file_get_contents($url);$aa=json_decode($str,true);print_r($aa);}
![微信开发详解:[4]微信天气预报](https://exp-picture.cdn.bcebos.com/560be432939c2cf7ce8fadac452c5b1b1fde1296.jpg)
5、数倌栗受绽据处理:下一步就是对获取到的数据处理,在函数中将获取到的数据重新组合,将有用的返回。例如要获取到天气的地方可用:$aa["w髫潋啜缅eatherinfo"]["city"]我处理的如下,大家不喜欢的可以按自己的格式修改:<?phpfunction weather($code="101110101"){$url="http://m.weather.com.cn/data/".$code.".html";$str=file_get_contents($url);$aa=json_decode($str,true);echo $aa["weatherinfo"]["date_y"] . $aa["weatherinfo"]["city"] ." 的天气是:";echo $aa["weatherinfo"]["temp1"] . $aa["weatherinfo"]["weather1"].$aa["weatherinfo"]["wind1"]."<br>";echo "温馨提示:".$aa["weatherinfo"]["index_d"];}weather(101010100);?>输入如图,在函数调用时,我换成了北京的城市代码,所以输出中显示北京的天气。
![微信开发详解:[4]微信天气预报](https://exp-picture.cdn.bcebos.com/cf6d451b1edef4dcb70462aa45ecd3d968750c96.jpg)
6、城市代码列表:正式使用上,应该将城市名和对应代码存在数据库中,用来对应全国各个城市的天气,有php基础的可以用数据库操作,这个示例中,我们以数组为例,列举几个城市的天气。$citycode["北京"]="101010100";$citycode["西安"]="101110101";$citycode["上海"]="101020100";$citycode["重庆"]="101040100.";$citycode["广州"]="101280101";
![微信开发详解:[4]微信天气预报](https://exp-picture.cdn.bcebos.com/cfadcdd96975f2c4f1a428f68f0148fe1f420696.jpg)
7、打开百度bae编辑平台,先将查询天气的函数放到程序的前面,放置位置如图。
![微信开发详解:[4]微信天气预报](https://exp-picture.cdn.bcebos.com/5c2a1ad149299a881f2e995067eeadbcbf2f7f96.jpg)
8、修改对$keyword的处理,提示用户查询的城市名,如果我们列举的城市中有,就返回天气,没有就给一个其他提示。$citycode[暧苗争死"北京"]="101010100";$citycode["西安"]="101110101";$citycode["上海"]="101020100";$citycode["重庆"]="101040100";$citycode["广州"]="101280101";if($citycode[$keyword]!=""){$contentStr=weather($citycode[$keyword]);}else $contentStr = "暂时我们只能查北京,西安,上海,重庆,广州的天气哦";
![微信开发详解:[4]微信天气预报](https://exp-picture.cdn.bcebos.com/bf6e59704618dfdaca064a3389214f5792567796.jpg)
9、到微信中发送对应的城市,试试查询结果,能够查到就说明制作成功了,没有成功的可以留言啊。
![微信开发详解:[4]微信天气预报](https://exp-picture.cdn.bcebos.com/e4b5e2f5ee0d3acec0ea03de87e265e7350fbb96.jpg)
10、对于城市代码,想要更完善的可以对应的添加其他的城市到数组,不过最好的办法是添加到数据库中,实时查询各个城市的天气。对于数据库的操作,以后将会讲到。
![微信开发详解:[4]微信天气预报](https://exp-picture.cdn.bcebos.com/ab966c6b0ce265e75a3215cd9f23beb9773eb796.jpg)