$textTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> <FuncFlag>0</FuncFlag> </xml>";
$msgType = "text";$contentStr = "感谢您的关注,回复“1”查看博主ID;回复“2”查看博主爱好";$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);echo $resultStr;
它的作用就是将我们要发给用户的文字消息合成为xml格式文本,这个文本里包含用户的OpenID,公众号的ID,系统时间,消息类型,回复的文字内容。那么,什么是xml格式呢?
XML是一种简单的数据存储语言,它要求每一个标签都有开始和结束标记,可以进行嵌套,它里面的每个字段(就是每种信息)都必须以<>开头,</>结尾,如下:<xml><content><id>博主ID</id><age>博主年龄</age></content></xml>xml简单分析到这里,下面回过头来继续看$textTpl这个变量:
$textTpl = "<xml>//这里表明是xml格式 <ToUserName><![CDATA[%s]]></ToUserName>//存储微信公众号的ID <FromUserName><![CDATA[%s]]></FromUserName>//存储用户OpenID <CreateTime>%s</CreateTime>//存储系统时间 <MsgType><![CDATA[%s]]></MsgType>//存储消息类型 <Content><![CDATA[%s]]></Content>//存储要发送到消息内容 <FuncFlag>0</FuncFlag>//是否星标(别管这个) </xml>";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);echo $resultStr;是不是知道怎么回事了?$textTpl就是xml格式变量,接下来将$fromUsername传给textTpl,然后是tuUsername,然后...,最后将全新的textTpl传给resultStr这个变量,然后发送给用户。
$imageTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[news]]></MsgType>//消息类型为news(图文) <ArticleCount>1</ArticleCount>//图文数量为1(单图文) <Articles> <item>//第一张图文消息 <Title><![CDATA[%s]]></Title> //标题 <Description><![CDATA[]]></Description>//描述为空(懒得描述) <PicUrl><![CDATA[%s]]></PicUrl>//打开前的图片链接地址 <Url><![CDATA[%s]]></Url>//点击进入后显示的图片链接地址 </item> </Articles> </xml> ";
$title = "哎呦我去,又下雨了";//标题$PicUrl = "http://1.star530.sinaapp.com/weather.jpg";//图片链接$Url = "http://1.star530.sinaapp.com/weather.jpg";//打开后的图片链接$resultStr = sprintf($imageTpl, $fromUsername, $toUsername, $time, $title, $PicUrl,$Url);echo $resultStr;运行效果如下:
html' target='_blank'>public function responseMsg() { //get post data, May be due to the different environments $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //extract post data if (!empty($postStr)){ $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName; $keyword = trim($postObj->Content); $time = time(); $textTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> <FuncFlag>0</FuncFlag> </xml>"; $imageTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[news]]></MsgType>//消息类型为news(图文) <ArticleCount>1</ArticleCount>//图文数量为1(单图文) <Articles> <item>//第一张图文消息 <Title><![CDATA[%s]]></Title> //标题 <Description><![CDATA[]]></Description>//描述为空(懒得描述) <PicUrl><![CDATA[%s]]></PicUrl>//打开前的图片链接地址 <Url><![CDATA[%s]]></Url>//点击进入后显示的图片链接地址 </item> </Articles> </xml> "; if(!empty( $keyword )) { $title = "哎呦我去,又下雨了";//标题 $PicUrl = "http://1.star530.sinaapp.com/weather.jpg";//图片链接 $Url = "http://1.star530.sinaapp.com/weather.jpg";//打开后的图片链接 $resultStr = sprintf($imageTpl, $fromUsername, $toUsername, $time, $title, $PicUrl,$Url); echo $resultStr; }else{ echo "Input something..."; } }else { echo ""; exit; } }}
好了,就这样。
本来是安排一周的时间将微信这个系列教程写完的,结果因为各种原因只完成了十篇。所以呢,就先写到这吧,等下次有抽出时间再继续吧...
后会有期~~
来源:http://blog.csdn.net/star530/article/details/26139129PHP编程郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答