放到SAE中 ,请问这是怎么回事? 出错地方如下:
<code>$foreach($arr_item as $item) { $item_str .=sprintf($itemTpl,$item['Title'],$item['Description'],$item['PicUrl'],$item['Url']); } </code>
代码贴到下面,望各位大神解决这个问题!
<code><?php //define your token define("TOKEN", "weixin");//这里填写的是你在微信上设置的TOKEN,但是必须保证与微信公众平台 接口配置信息一致 $wechatObj = new wechatCallbackapiTest(); $wechatObj->valid();//这里是测试网站配置信息和开发的是否一致。 $wechatObj->responseMsg();//新增加这一项,目的是调用responseMsg()这个功能。 class wechatCallbackapiTest { //若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,否则接入失败。 public function valid() { $echoStr = $_GET["echostr"]; //alid signature , option if($this->checkSignature()){ echo $echoStr; exit; } } public function responseMsg() { $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; if (!empty($postStr)){ $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $RX_TYPE = trim($postObj->MsgType); switch ($RX_TYPE) { case "text": $resultStr = $this->receiveText($postObj); break; case "image": $resultStr = $this->receiveImage($postObj); break; case "location": $resultStr = $this->receiveLocation($postObj); break; case "voice": $resultStr = $this->receiveVoice($postObj); break; case "video": $resultStr = $this->receiveVideo($postObj); break; case "link": $resultStr = $this->receiveLink($postObj); break; case "event": $resultStr = $this->receiveEvent($postObj); break; default: $resultStr = "unknow msg type: ".$RX_TYPE; break; } echo $resultStr; }else { echo ""; exit; } } /*文本消息->1*/ private function receiveText($object){ $keyword = trim($object->Content); if(!empty($keyword)){ $url = "http://www.tuling123.com/openapi/api?key=a2fcd4181d8aa942ca2e078b1c479684&info=".$keyword; $data = file_get_contents($url); $text =json_decode($data,ture); $content = $text['text']; $result =$this->transmitText($object,$content); } else if($keyword=="图文"||$keyword=="单图文"){ $content = array(); $content[]=array("Title"=>"单图文标题", "Descrption"=>"单图文内容", "PicUrl"=>"http://v1.qzone.cc/pic/201602/12/15/12/56bd85d5cb22d067.jpg%21600x600.jpg", "Url"=>"http://m.cnblogs.com/?u=txw1958"); $result = $this->transmitNews($object,$content); } else if($keyword=="多图文"){ $content = array(); $content[]=array("Title"=>"多图文标题1", "Descrption"=>"图文内容", "PicUrl"=>"http://v1.qzone.cc/pic/201602/12/15/12/56bd85d5cb22d067.jpg%21600x600.jpg", "Url"=>"http://m.cnblogs.com/?u=txw1958"); $content[]=array("Title"=>"多图文标题2", "Descrption"=>"图文内容", "PicUrl"=>"http://v1.qzone.cc/pic/201602/12/15/12/56bd85d5cb22d067.jpg%21600x600.jpg", "Url"=>"http://m.cnblogs.com/?u=txw1958"); $content[]=array("Title"=>"多图文标题3", "Descrption"=>"图文内容", "PicUrl"=>"http://v1.qzone.cc/pic/201602/12/15/12/56bd85d5cb22d067.jpg%21600x600.jpg", "Url"=>"http://m.cnblogs.com/?u=txw1958"); $result = $this->transmitNews($object,$content); }else if($keyword=="音乐"){ $content = array("Title"=>"七月上", "Descrption"=>"jam", "MusicUrl"=>"http://sc1.111ttt.com/2015/5/12/28/105281351446.mp3", "HQMusicUrl"=>"http://sc1.111ttt.com/2015/5/12/28/105281351446.mp3"); $result = $this->transmitMusic($object,$content); } return $result; } /*图片消息->1*/ private function receiveImage($object){ $content=array("MediaId"=>$object->MediaId); $result = $this->transmitImage($object,$content); return $result; } /*回复语音消息->1*/ private function receiveVoice($object){ $content=array("MediaId"=>$object->MediaId); $result =$this->transmitVoice($object,$content); return $result; } /*回复视频消息->*/ private function receiveVideo($object){ $content=array("MediaId"=>$object->MediaId, "ThumbMediaId"=>$object->ThumbMediaId, "Title"=>"", "Descrption"=>""); $result=$this->transmitVideo($object,$content); return $result; } /*回复文本消息->xml*/ private function transmitText($object,$content){ $textTpl = "<xml> <tousername></tousername> <fromusername></fromusername> <createtime>%s</createtime> <msgtype></msgtype> <content></content> </xml>"; $result = sprintf($textTpl,$object->FromUserName,$object->ToUserName,time(),$content); return $result; } /*回复图片消息xml*/ private function transmitImage($object,$imageArray){ $itemTpl = "<image> <mediaid></mediaid> </image>"; $item_str = sprintf($itemTpl,$imageArray['MediaId']); $textTpl = "<xml> <tousername></tousername> <fromusername></fromusername> <createtime>%s</createtime> <msgtype></msgtype> $item_str </xml>"; $result = sprintf($textTpl,$object->FromUserName,$object->ToUserName,time()); return $result; } /*回复语音消息xml*/ private function transmitVoice($object,$voiceArray){ $itemTpl = "<voice> <mediaid></mediaid> </voice>"; $item_str = sprintf($itemTpl,$voiceArray['MediaId']); $textTpl = "<xml> <tousername></tousername> <fromusername></fromusername> <createtime>%s</createtime> <msgtype></msgtype> $item_str </xml>"; $result = sprintf($textTpl,$object->FromUserName,$object->ToUserName,time()); return $result; } /*回复视频消息Xml*/ private function transmitVideo($object,$videoArray){ $itemTpl = "<video> <mediaid></mediaid> <thumbmediaid></thumbmediaid> <title></title> <descrption></descrption> </video>"; $item_str = sprintf($itemTpl,$videoArray['MediaId'],$videoArray['ThumbMediaId'],$videoArray['Title'],$videoArray['Descrption']); $textTpl = "<xml> <tousername></tousername> <fromusername></fromusername> <createtime>%s</createtime> <msgtype></msgtype> $item_str </xml>"; $result = sprintf($textTpl,$object->FromUserName,$object->ToUserName,time()); return $result; } /*回复图文消息xml*/ private function transmitNews($object,$arr_item){ if(!is_array($arr_item)) return; $itemTpl = "<item> <title></title> <description></description> <picurl></picurl> <url></url> </item>"; $item_str = ""; $foreach($arr_item as $item) { $item_str .=sprintf($itemTpl,$item['Title'],$item['Description'],$item['PicUrl'],$item['Url']); } $newsTpl = "<xml> <tousername></tousername> <fromusername></fromusername> <createtime>%s</createtime> <msgtype></msgtype> <articlecount>%s</articlecount> <articles> $item_str </articles> </xml>"; $result = sprintf($newsTpl,$object->FromUserName,$object->ToUserName,time(),count($arr_item)); return $result; } /*回复音乐xml*/ private function transmitMusic($object,$musicArray){ $itemTpl = "<music> <title></title> <description></description> <musicurl></musicurl> <hqmusicurl></hqmusicurl> </music>"; $item_str = sprintf($itemTpl,$musicArray['Title'],$musicArray['Description'],$musicArray['MusicUrl'],$musicArray['HQMusicUrl']); $textTpl = "<xml> <tousername></tousername> <fromusername></fromusername> <createtime>%s</createtime> <msgtype></msgtype> $item_str </xml>"; $result=sprintf($textTpl,$object->FromUserName,$object->ToUserName,time()); return $result; } // 开发者通过检验signature对请求进行校验 private function checkSignature() { $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token = TOKEN; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if( $tmpStr == $signature ){ return true; }else{ return false; } } } ?> </code>
回复内容:
放到SAE中 ,请问这是怎么回事? 出错地方如下:
<code>$foreach($arr_item as $item) { $item_str .=sprintf($itemTpl,$item['Title'],$item['Description'],$item['PicUrl'],$item['Url']); } </code>
代码贴到下面,望各位大神解决这个问题!
<code><?php //define your token define("TOKEN", "weixin");//这里填写的是你在微信上设置的TOKEN,但是必须保证与微信公众平台 接口配置信息一致 $wechatObj = new wechatCallbackapiTest(); $wechatObj->valid();//这里是测试网站配置信息和开发的是否一致。 $wechatObj->responseMsg();//新增加这一项,目的是调用responseMsg()这个功能。 class wechatCallbackapiTest { //若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,否则接入失败。 public function valid() { $echoStr = $_GET["echostr"]; //alid signature , option if($this->checkSignature()){ echo $echoStr; exit; } } public function responseMsg() { $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; if (!empty($postStr)){ $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $RX_TYPE = trim($postObj->MsgType); switch ($RX_TYPE) { case "text": $resultStr = $this->receiveText($postObj); break; case "image": $resultStr = $this->receiveImage($postObj); break; case "location": $resultStr = $this->receiveLocation($postObj); break; case "voice": $resultStr = $this->receiveVoice($postObj); break; case "video": $resultStr = $this->receiveVideo($postObj); break; case "link": $resultStr = $this->receiveLink($postObj); break; case "event": $resultStr = $this->receiveEvent($postObj); break; default: $resultStr = "unknow msg type: ".$RX_TYPE; break; } echo $resultStr; }else { echo ""; exit; } } /*文本消息->1*/ private function receiveText($object){ $keyword = trim($object->Content); if(!empty($keyword)){ $url = "http://www.tuling123.com/openapi/api?key=a2fcd4181d8aa942ca2e078b1c479684&info=".$keyword; $data = file_get_contents($url); $text =json_decode($data,ture); $content = $text['text']; $result =$this->transmitText($object,$content); } else if($keyword=="图文"||$keyword=="单图文"){ $content = array(); $content[]=array("Title"=>"单图文标题", "Descrption"=>"单图文内容", "PicUrl"=>"http://v1.qzone.cc/pic/201602/12/15/12/56bd85d5cb22d067.jpg%21600x600.jpg", "Url"=>"http://m.cnblogs.com/?u=txw1958"); $result = $this->transmitNews($object,$content); } else if($keyword=="多图文"){ $content = array(); $content[]=array("Title"=>"多图文标题1", "Descrption"=>"图文内容", "PicUrl"=>"http://v1.qzone.cc/pic/201602/12/15/12/56bd85d5cb22d067.jpg%21600x600.jpg", "Url"=>"http://m.cnblogs.com/?u=txw1958"); $content[]=array("Title"=>"多图文标题2", "Descrption"=>"图文内容", "PicUrl"=>"http://v1.qzone.cc/pic/201602/12/15/12/56bd85d5cb22d067.jpg%21600x600.jpg", "Url"=>"http://m.cnblogs.com/?u=txw1958"); $content[]=array("Title"=>"多图文标题3", "Descrption"=>"图文内容", "PicUrl"=>"http://v1.qzone.cc/pic/201602/12/15/12/56bd85d5cb22d067.jpg%21600x600.jpg", "Url"=>"http://m.cnblogs.com/?u=txw1958"); $result = $this->transmitNews($object,$content); }else if($keyword=="音乐"){ $content = array("Title"=>"七月上", "Descrption"=>"jam", "MusicUrl"=>"http://sc1.111ttt.com/2015/5/12/28/105281351446.mp3", "HQMusicUrl"=>"http://sc1.111ttt.com/2015/5/12/28/105281351446.mp3"); $result = $this->transmitMusic($object,$content); } return $result; } /*图片消息->1*/ private function receiveImage($object){ $content=array("MediaId"=>$object->MediaId); $result = $this->transmitImage($object,$content); return $result; } /*回复语音消息->1*/ private function receiveVoice($object){ $content=array("MediaId"=>$object->MediaId); $result =$this->transmitVoice($object,$content); return $result; } /*回复视频消息->*/ private function receiveVideo($object){ $content=array("MediaId"=>$object->MediaId, "ThumbMediaId"=>$object->ThumbMediaId, "Title"=>"", "Descrption"=>""); $result=$this->transmitVideo($object,$content); return $result; } /*回复文本消息->xml*/ private function transmitText($object,$content){ $textTpl = "<xml> <tousername></tousername> <fromusername></fromusername> <createtime>%s</createtime> <msgtype></msgtype> <content></content> </xml>"; $result = sprintf($textTpl,$object->FromUserName,$object->ToUserName,time(),$content); return $result; } /*回复图片消息xml*/ private function transmitImage($object,$imageArray){ $itemTpl = "<image> <mediaid></mediaid> </image>"; $item_str = sprintf($itemTpl,$imageArray['MediaId']); $textTpl = "<xml> <tousername></tousername> <fromusername></fromusername> <createtime>%s</createtime> <msgtype></msgtype> $item_str </xml>"; $result = sprintf($textTpl,$object->FromUserName,$object->ToUserName,time()); return $result; } /*回复语音消息xml*/ private function transmitVoice($object,$voiceArray){ $itemTpl = "<voice> <mediaid></mediaid> </voice>"; $item_str = sprintf($itemTpl,$voiceArray['MediaId']); $textTpl = "<xml> <tousername></tousername> <fromusername></fromusername> <createtime>%s</createtime> <msgtype></msgtype> $item_str </xml>"; $result = sprintf($textTpl,$object->FromUserName,$object->ToUserName,time()); return $result; } /*回复视频消息Xml*/ private function transmitVideo($object,$videoArray){ $itemTpl = "<video> <mediaid></mediaid> <thumbmediaid></thumbmediaid> <title></title> <descrption></descrption> </video>"; $item_str = sprintf($itemTpl,$videoArray['MediaId'],$videoArray['ThumbMediaId'],$videoArray['Title'],$videoArray['Descrption']); $textTpl = "<xml> <tousername></tousername> <fromusername></fromusername> <createtime>%s</createtime> <msgtype></msgtype> $item_str </xml>"; $result = sprintf($textTpl,$object->FromUserName,$object->ToUserName,time()); return $result; } /*回复图文消息xml*/ private function transmitNews($object,$arr_item){ if(!is_array($arr_item)) return; $itemTpl = "<item> <title></title> <description></description> <picurl></picurl> <url></url> </item>"; $item_str = ""; $foreach($arr_item as $item) { $item_str .=sprintf($itemTpl,$item['Title'],$item['Description'],$item['PicUrl'],$item['Url']); } $newsTpl = "<xml> <tousername></tousername> <fromusername></fromusername> <createtime>%s</createtime> <msgtype></msgtype> <articlecount>%s</articlecount> <articles> $item_str </articles> </xml>"; $result = sprintf($newsTpl,$object->FromUserName,$object->ToUserName,time(),count($arr_item)); return $result; } /*回复音乐xml*/ private function transmitMusic($object,$musicArray){ $itemTpl = "<music> <title></title> <description></description> <musicurl></musicurl> <hqmusicurl></hqmusicurl> </music>"; $item_str = sprintf($itemTpl,$musicArray['Title'],$musicArray['Description'],$musicArray['MusicUrl'],$musicArray['HQMusicUrl']); $textTpl = "<xml> <tousername></tousername> <fromusername></fromusername> <createtime>%s</createtime> <msgtype></msgtype> $item_str </xml>"; $result=sprintf($textTpl,$object->FromUserName,$object->ToUserName,time()); return $result; } // 开发者通过检验signature对请求进行校验 private function checkSignature() { $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token = TOKEN; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if( $tmpStr == $signature ){ return true; }else{ return false; } } } ?> </code>
foreach
不是变量,为什么前面有个$
?

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

查找方法:1、用strpos(),语法“strpos("字符串值","查找子串")+1”;2、用stripos(),语法“strpos("字符串值","查找子串")+1”。因为字符串是从0开始计数的,因此两个函数获取的位置需要进行加1处理。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

禅工作室 13.0.1
功能强大的PHP集成开发环境

Atom编辑器mac版下载
最流行的的开源编辑器

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

Dreamweaver Mac版
视觉化网页开发工具