Heim  >  Artikel  >  Backend-Entwicklung  >  微信开发 - syntax error, unexpected T_AS in example.php on line 211?

微信开发 - syntax error, unexpected T_AS in example.php on line 211?

WBOY
WBOYOriginal
2016-06-06 20:15:07860Durchsuche

放到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不是变量,为什么前面有个$

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn