微信公众平台小功能多点,可以增加用户的粘性,不会感觉你微信没内容,就把你给取消关注了。所以得折腾各种有的没的东西。
个人封装天气预报功能代码如下(说明下:网上有很多此类代码,但是要自己理解,就得实际折腾)
<?php header('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同百度周边搜索篇说明一样,不懂看前面