【微信公众平台开发】封装获取天气预报功能

来源:互联网 发布:mac装win10虚拟机 编辑:程序博客网 时间:2024/05/16 01:35

微信公众平台小功能多点,可以增加用户的粘性,不会感觉你微信没内容,就把你给取消关注了。所以得折腾各种有的没的东西。

个人封装天气预报功能代码如下(说明下:网上有很多此类代码,但是要自己理解,就得实际折腾)
<?phpheader('Content-Type:text/html;charset=utf-8');class WeChatMsgType{private  $toUserName;private  $fromUserName;private  $xmlModle;private  $createTime;public function SetUserInfo($toUserName,$fromUserName) //设置用户信息{$this->toUserName = $toUserName;$this->fromUserName = $fromUserName;$this->createTime = time();}       public function WeatherMsg($cityName)//天气预报信息{$url = "http://api.map.baidu.com/telematics/v3/weather?location=".$cityName."&output=json&ak=11ffd27d38deda622f51c9d314d46b17";$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$output = curl_exec($ch); curl_close($ch);$result = json_decode($output, true);if ($result["error"] != 0){return $result["status"];}$curHour = (int)date('H',time());$weather = $result["results"][0];$ImageTexts = array();$ImageTexts[0] = self::SetImageTextInfo($weather['currentCity'].'天气预报',"", "", "");//$aa=var_export(urldecode(urlencode($weather)),true);//file_put_contents("debug.txt", date("Y-m-d H:i:s",time()).$aa.PHP_EOL,FILE_APPEND);for($i=0; $i<count($weather['weather_data']); $i++){$ImageTexts[$i+1] = self::SetImageTextInfo($weather["weather_data"][$i]["date"]."\n".            $weather["weather_data"][$i]["weather"]." ".            $weather["weather_data"][$i]["wind"]." ".            $weather["weather_data"][$i]["temperature"],"", (($curHour >= 6) && ($curHour < 18))?$weather["weather_data"][$i]["dayPictureUrl"]:$weather["weather_data"][$i]["nightPictureUrl"], "");}return self::ImageTextMsg($ImageTexts);}public function SetImageTextInfo($sTitle, $sDescription, $sPicUrl, $Url) {$item = "<item><Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item>";$ret=sprintf($item, $sTitle, $sDescription, $sPicUrl,$Url);return $ret;}public function ImageTextMsg($ImageTexts){$this->xmlModle = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[news]]></MsgType><ArticleCount>%d</ArticleCount><Articles>";foreach ($ImageTexts as $item){$this->xmlModle = $this->xmlModle.$item;}$this->xmlModle = $this->xmlModle."</Articles></xml>" ;$ret=sprintf($this->xmlModle, $this->fromUserName, $this->toUserName, $this->createTime,count($ImageTexts));return $ret;}}?>

调用用法:
$weChatMsgType = new WeChatMsgType();$weChatMsgType->SetUserInfo($this->toUserName, $this->fromUserName);
$resultStr=$weChatMsgType->WeatherMsg("北京");



注:上面ak同百度周边搜索篇说明一样,不懂看前面


0 0
原创粉丝点击