您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 营销创新 > 微信公众平台自定义菜单
微信公众平台自定义菜单[导读]最近微信公众平台挺火的,肯定好多公司像我们公司一样,要开发微信公众平台,在此记录一下在制作自定义菜单时遇到的问题,希望能给某些人点思路,或少走点弯路为了动态修改自定义菜单,把菜单项存入数据库中$arr是最近微信公众平台挺火的,肯定好多公司像我们公司一样,要开发微信公众平台,在此记录一下在制作自定义菜单时遇到的问题,希望能给某些人点思路,或少走点弯路.为了动态修改自定义菜单,把菜单项存入数据库中$arr是从数据库查询出来的经过处理后的数组格式为:?array(1){[button]=array(3){[0]=array(3){[type]=string(4)view[name]=string(12)公司新闻[url]=string(24)}[1]=array(3){[type]=string(4)view[name]=string(12)公司案例[url]=string(20)}[2]=array(2){[name]=string(12)智能家居[sub_button]=array(5){[url]=string(22)[0]=array(3){[type]=string(5)click[name]=string(12)功能描述[key]=string(10)smart_desc}[1]=array(3){[type]=string(5)click[name]=string(12)每日一点[key]=string(9)day_click}[2]=array(3){[type]=string(5)click[name]=string(12)一天一点[key]=string(13)eve_day_click}[3]=array(3){[type]=string(5)click[name]=string(12)休闲时刻[key]=string(11)xiuxian_day}[4]=array(3){[type]=string(5)click[name]=string(12)做人好难[key]=string(3)nan}}}}}在添加菜单的时候发现直接json_encode($arr);会提示40016错误:不合法的按钮个数在调用了json_encode函数之后所有中文被转换成\u8fd9这种形式,为了使用json_encode处理后的结构而不改变中文可以使用如下函数(来源于互联网):?/****************************************************************使用特定function对数组中所有元素做处理*@paramstring&$array要处理的字符串*@paramstring$function要执行的函数*@returnboolean$apply_to_keys_also是否也应用到key上*@accesspublic**************************************************************/functionarrayRecursive(&$array,$function,$apply_to_keys_also=false){static$recursive_counter=0;if(++$recursive_counter1000){die('possibledeeprecursionattack');}foreach($arrayas$key=$value){if(is_array($value)){self::arrayRecursive($array[$key],$function,$apply_to_keys_also);}else{$array[$key]=$function($value);}if($apply_to_keys_also&&is_string($key)){$new_key=$function($key);if($new_key!=$key){$array[$new_key]=$array[$key];unset($array[$key]);}}}$recursive_counter--;}/****************************************************************将数组转换为JSON字符串(兼容中文)*@paramarray$array要转换的数组*@returnstring转换得到的json字符串*@accesspublic**************************************************************/functionJSON($array){self::arrayRecursive($array,'urlencode',true);$json=json_encode($array);returnurldecode($json);}执行添加:?functionapply(){$token_str=self::get_access_token();$del_url=={$token_str};file_get_contents($del_url);$apply_url=={$token_str};$data=self::JSON(self::get_menu());//json化中文不变$ch=curl_init();curl_setopt($ch,CURLOPT_URL,$apply_url);curl_setopt($ch,CURLOPT_CUSTOMREQUEST,POST);curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0(compatible;MSIE5.01;WindowsNT5.0)');curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);curl_setopt($ch,CURLOPT_AUTOREFERER,1);curl_setopt($ch,CURLOPT_POSTFIELDS,$data);curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);$result=curl_exec($ch);curl_close($ch);$result=json_decode($result,true);$this-redirect(Menu/index,array('msg'=($result['errcode']==0?'操作成功':'操作失败'),'state'=$result['errcode']==0?0:1));}OK添加成功^_^,仅供参考当然代码过多发到首页肯定是过不了的,不过为了让更多人看到还是厚着脸色发布到首页(不知道能在首页呆几分钟~
本文标题:微信公众平台自定义菜单
链接地址:https://www.777doc.com/doc-2435240 .html