https://blog.csdn.net/wyz365889/article/details/36677051
<?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"]."
".
$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("北京");