微信发送信息也给出了示例代码;修改下就行,就是拼接下字符串。
/*
*消息
*$fromUsername 开发者微信号
*$toUsername 接收方帐号
*$keyword 关键字
*$contentStr 回复的消息内容
*/
public function send_text($fromUsername, $toUsername, $contentStr)
{
$textTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";
//<FuncFlag>0</FuncFlag>
$time = time();
$result = sprintf($textTpl, $fromUsername, $toUsername, $time, $contentStr);
return $result;
}
/*
*回复图文消息
*$fromUsername 开发者微信号
*$toUsername 接收方帐号
*$keyword 关键字
*$num 回复图文消息数量,需要大于1
*$contentStr 回复的消息内容
*/
public function send_articles($fromUsername, $toUsername, $contentArr)
{
$articlesTpl1 = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[news]]></MsgType>
<ArticleCount><![CDATA[%d]]></ArticleCount>
<Articles>";
$time = time();
$num = count($contentArr);
$result1 = sprintf($articlesTpl1, $fromUsername, $toUsername, $time, $num);
$result2 = "";
if($num == 1)
{
$articlesTpl2 = "<item>
<Title><![CDATA[%s]]></Title>
<Description><![CDATA[%s]]></Description>
<Url><![CDATA[%s]]></Url>
</item>";
//<PicUrl><![CDATA[%s]]></PicUrl>
//<PicUrl><![CDATA[%s]]></PicUrl>
$result2 .= sprintf($articlesTpl2, $contentArr[0]['title'], $contentArr[0]['desc'], $contentArr[0]['picurl'], $contentArr[0]['url']);
}else
{
for ($i=0; $i < $num; $i++)
{
$articlesTpl2 = "<item>
<Title><![CDATA[%s]]></Title>
<Description><![CDATA[%s]]></Description>
<Url><![CDATA[%s]]></Url>
</item>";
//<PicUrl><![CDATA[%s]]></PicUrl>
$result2 .= sprintf($articlesTpl2, $contentArr[$i]['title'], $contentArr[$i]['desc'], $contentArr[$i]['picurl'], $contentArr[$i]['url']);
}
}
$articlesTpl3 = "</Articles>
</xml> ";
$result = $result1.$result2.$articlesTpl3;
return $result;
}
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$msgType = trim($postObj->MsgType);
$keywords = trim($postObj->Content);
$info= $op->get_news_withkeywords($keywords);
if(empty($info) || $info == false)
{
echo "error";
exit;
}else
{
if($info['msg_type'] == 'text')
{
$res = $hcwechat->send_text($fromUsername, $toUsername, $info['content']);
}else
{
$content = array(
array(
'title' => $info['title'],
'desc' => $info['digest'],
//'picurl' => $info['thumb_media_id'],//这里的图片地址怎么获取到,找了几天一直没找到,我这个是订阅号,不知道行不。
'url' => $info['url'],
),
);
$res = $hcwechat->send_articles($fromUsername, $toUsername, $content);
}
echo $res;
exit;
}
因为我这里发送一个编号只获取一条信息,所以只需要发送单图文信息就可以了,上面的多图文只是为了以防万一,以及自己多动点手。当然可以不用判断是否多图文,我这里都是单图文,所以我做了一个判断;