手机版

php微信开发之百度天气预报

时间:2021-09-12 来源:互联网 编辑:宝哥软件园 浏览:

本文实例为大家分享了服务器端编程语言(专业超文本预处理器的缩写)微信百度天气预报的开发代码,供大家参考,具体内容如下

1.登录百度美国阿拉斯加邮递区号申请:http://磅运。百度。com/API控制台/键

2.实现天气信息功能

baiduWeather.php

?php /** *使用百度天气预报接口获取城市天气信息案例实现*///获取城市天气信息函数getWeatherInfo($ city name){ if($ city name==' ' | | | |(strstrstr($ city name ' '))){ return '发送城市加天气,例如北京天气;} //获取到的ak $ak=你的正义与发展党;//获取到的sk $sk=您的sk;//调用接口$ URL='http://api.map.baidu.com/telematics/v3/weather?AK=% SLO位置=% sout放=% SSK=% s ';$ uri='/远程信息处理/v3/weather ';$ location=$ city name $ output=' JSON $ query string _ arrays=array(' AK '=$ AK,' location'=$location,' output '=$ output);$ query string=http _ build _ query($ query string _ arrays);//生成sn $sn=md5(urlencode($uri .'?'。$querystring .$ sk));$targetUrl=sprintf($url,$ak,urlencode($location),$output,$ sn);$ ch=curl _ init();curl_setopt($ch,CURLOPT_URL,$ TargetURl);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);$ result=curl _ exec($ ch);curl _ close($ ch);$result=json_decode($result,true);if($result['error']!=0){ return $ result[' status '];} $curHour=(int)date('H ',time());$ weather=$ result[' results '][0];$天气数组[]=数组(' Title '=$天气['当前城市']).'天气预报、“Description”=“”、“picURl”=“”、“URl”=“”);对于($ I=0;$ I count($ weather[' weather _ data ']);$ I){ $ Weather array[]=array(' Title '=$ Weather[' Weather _ data '][$ I][' data '].\n .$ weather[' weather _ data '][$ I][' weather '].$ weather[' weather _ data '][$ I][' wind '].$ weather[' weather _ data '][$ I][' temperature '],' Description'=' ',' PicUrl '=($ curHour=6)($ curHour 18))?$ weather[' weather _ data '][$ I][' dayPictureUrl ']: $ weather[' weather _ data '][$ I][' night pictureurl '],' URL '=' ');}返回$ weatherArray} 3。实现天气消息事件

?php /* CopyRight 2016保留所有权利*/define('TOKEN ',' weixin ');/** * 百度天气预报案例实现* 实现思路: * 1.申请百度ak、sk * 2 .使用百度天气预报接口* 3.实现天气信息功能* 4.实现事件响应功能*/$微信bj=新微信callbackapitet();if(!isset($ _ GET[' echostr ']){ $微信对象响应消息();} else { $微信对象-valid();}类微信CallbackapiTest { //验证签名public function valid(){ $ echoStr=$ _ GET[' echoStr '];if($ this-CheckSignature()){ header(' content-type : text ');echo $ echoStr退出;} }公共函数检查签名(){ $ signature=$ _ GET[' signature '];$时间戳=$_GET['时间戳'];$ nonce=$ _ GET[' nonce '];$ TOKEN=TOKEN $ TMParr=array($ TOKEN,$timestamp,$ nonce);sort($ TMParr);$tmpStr=内爆($ TMParr);$ TMPstr=sha1($ TMPstr);if($ TMPstr==$ signature){ 0返回true} else { return false} } //响应消息公共函数响应消息(){ $ PostStr=$ GLOBALS[' HTTP _ RAW _ POST _ DATA '];if(!空($postStr)){ $this-logger('R ').$ PostStr);$ PostObj=simple XML _ load _ string($ PostStr,' SimpleXMLElement ',LIBXML _ NocDATa);$ RX _ TYPE=trim($ PostObj-MSgtype);//消息类型分离switch($ RX _ TYPE){ case ' event ' : $ result=$ this-receiveEvent($ PostObj);打破;case ' text ' : $ result=$ this-receiveText($ PostObj);打破;default: $result='未知消息类型: '。$ RX _ TYPE打破;} echo $结果;} else { echo退出;} } //接收事件消息公共函数receive event($ object){ $ content=' ';switch($ object-Event){ case ' subscribe ' : $ content='欢迎关注尼基的公众号;$内容。=(!空($object-EventKey))?(' \n来自二维码场景str_replace('qrscene_ ','',$ object-EventKey)): " ";打破;案例"取消订阅":美元内容="取消关注;打破;} $ result=$ this-transmission ext($ object,$ content);返回$ result} //接收文本消息公共函数receive text($ object){ $ keyword=trim($ object-Content);//自动回复模式if(strtr($)关键字,)天气)){ $city=str_replace('天气、''、$关键字);包括(‘百度天气。PHP’);$ content=getWeatherInfo($ city);} $ result=$ this-transmitNews($ object,$ content);返回$ result} //回复图文消息公共函数transmitNews($object,$ newarray){ if(!is _ array($ new array)){ return;} $itemTpl=' item Title![CDATA[% s]]/标题说明![CDATA[% s]]/描述PicUrl![CDATA[%s]]/PicUrl Url![Cdata[% s]]/URl/item ';$ item _ str=foreach($ new array as $ item){ $ item _ str .=sprintf($itemTpl,$item['Title'],$item['Description'],$item['PicUrl'],$ item[' Url ']);} $xmlTpl='xml ToUserName![CData[% s]]/从用户名使用用户名![CData[% s]]/来自用户名创建时间% s/创建时间MsgType![CData[新闻]]/MSgtype文章计数% s/文章计数Articles $ item _ str/Articles/XML ';$result=sprintf($xmlTpl,$object-FromUserName,$object-ToUserName,time(),count($ new array));返回$ result} //日志记录公共函数logger($ log _ content){ if(isset($ _ SERVER[' HTTP _ app _ name ']){//SAE _ set _ display _ errors(false);SAE _ debug($ log _ content);sae_set_display_errors(真);} else if($ _ SERVER[' REMOTE _ ADDR ']!=' 127 .0 .0 .1 '){//LOCAL $ max _ size=10000;$ log _ filename=' log . xmlif(file _ exists($ log _ filename)和(ABS(文件大小($ log _ filename))$ max _ size)){ unlink($ log _ filename);} file _ put _ contents($ log _ filename,date('H:i:s ').' '.$log_content .\r\n ',FILE _ APPEND);} } } ?

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

版权声明:php微信开发之百度天气预报是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。