$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編程鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答