本文实例为大家分享了php微信高级接口群发、多客服源码,供大家参考,具体内容如下
/** * 微信接口调用 * 依赖 * 全局变量 * global $uid 公众号用户id, $wid 公众号id, $wechatid 粉丝唯一id; * 参数 * $postStr = $GLOBALS[\"HTTP_RAW_POST_DATA\"]; * $postObj = simplexml_load_string($postStr, \'SimpleXMLElement\', LIBXML_NOCDATA); * 缓存类 自定义 * Cache:set * Cache:get * 具体业务修改 * 1.上传图文信息至微信素材库 * function uploadArticlesToWeiXinServer() * 2.关键字匹配图文回复 * function getArticleData() * * usage: * $options = array( * \'token\'=>\'tokenaccesskey\', //填写你设定的key * \'appid\'=>\'wxdk1234567890\', //填写高级调用功能的app id * \'appsecret\'=>\'xxxxxxxxxxxxxxxxxxx\', //填写高级调用功能的密钥 * ); */ class WeiXinTool { private $appid; private $appsecret; private $access_token; private $mediaType = array(\'image\' => array(\"jpg\"), \'voice\' => array(\'amr\', \'MP3\'), \'video\' => array(\'mp4\'), \'thumb\' => array(\"jpg\")); private $mediaMaxSize = array(\'image\' => 131072, \'voice\' => 262144, \'video\' => 1048576, \'thumb\' => 65536); private $tem_file_path = \"\"; // 授权地址 const AUTH_URL = \'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s\'; // 素材上传 const UPLOAD_MEDIA_URL = \"http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token=%s&type=%s\"; const GET_MEDIA_URL = \"http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=%s&media_id=%s\"; const UPLOAD_NEWS_URL = \"https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token=%s\"; public function __construct($options) { $this->appid = isset($options[\'appid\']) ? $options[\'appid\'] : \'\'; $this->appsecret = isset($options[\'appsecret\']) ? $options[\'appsecret\'] : \'\'; //需修改 //上传图片临时文件目录自定义 $this->tem_file_path = YYUC_FRAME_PATH . YYUC_PUB . \'/\' . Session::get(\'upath\'); } /** * 需修改 * 具体业务需求,图文信息上传至素材库 * 微站文章上传至微信素材 * @param type $wid * @param type $aid * @return int */ public function uploadArticlesToWeiXinServer($wid, $aid) { //具体图文组装过程,需修改 $m = new Model(\'website_article\'); $m_pubs = new Model(\'pubs\'); $m_pubs->find(array(\"id\" => $wid)); $m->find(array(\"wid\" => $wid, \'id\' => $aid)); $res = array(); if ($m->has_id() && $m_pubs->has_id()) { $res[] = $m->get_model_array(); // var_dump($res); $m->votetouser = json_decode($m->votetouser, TRUE); $articles = $m->votetouser[0]; $m_article = new Model(\'website_article\'); $ress = $m_article->where(array(\'wid\' => $wid, \'id\' => $articles))->list_all_array(); $res = array_merge($res, $ress); } else { $errarr = array(); $errarr[\'errcode\'] = 44003; $errarr[\'errmsg\'] = self::$errorno[$errarr[\'errcode\']]; return $errarr; } $items = array(); foreach ($res as $k => $v) { $mediaid = $this->uploadMedia($v[\'picurl\']); if ($mediaid[\'media_id\']) { $thumb_media_id = $mediaid[\'media_id\']; } else { return $mediaid; } $item = array( \"thumb_media_id\" => $thumb_media_id, \"author\" => $m_pubs->pubun, \"title\" => $v[\'title\'], \"content_source_url\" => WeiXinTool::complateUrl(WeiSite::parseArticleLinkData($v)), \"content\" => $v[\'reply_content\'], //内容 富文本 \"digest\" => $v[\'description\']//描述 ); $items[] = $item; } //以上具体图文组装过程,需修改 $postData[\'articles\'] = $items; $error = $this->uploadNews($postData); return $error; } /** * 需修改 * 微站文章关键字匹配数据解析 */ public static function getArticleData($keyword) { global $wid; $m = new Model(\'website_article\'); $m->find(array(\'wid\' => $wid, \'keyword@~\' => \" \" . $keyword . \" \")); $res = array(); if ($m->has_id()) { $res[] = array(\"tit\" => $m->title, \"pic\" => $m->picurl, \"dec\" => $m->description, \"url\" => WeiSite::parseArticleLinkData($m->get_model_array())); $m->votetouser = json_decode($m->votetouser, TRUE); $articles = $m->votetouser[0]; if (!empty($articles)) { foreach ($articles as $v) { $m_article = new Model(\'website_article\'); $m_article->find(array(\'wid\' => $wid, \'id\' => $v)); $res[] = array(\"tit\" => $m_article->title, \"pic\" => $m_article->picurl, \"dec\" => $m_article->description, \"url\" => WeiSite::parseArticleLinkData($m_article->get_model_array())); } } return $res; } } /** * 获取accesstoken * @param type $flag 强制刷新accesstoken 开关 * @return type */ public function getAccessToken($flag = FALSE) { $url = sprintf(self::AUTH_URL, $this->appid, $this->appsecret); $result = Cache::get(md5($url)); if ($flag || empty($result)) { $result = $this->http_get($url); $result = json_decode($result, TRUE); if ($result[\'errcode\']) { return $result[\'errcode\']; } Cache::set(md5($url), $result, 1); } $this->access_token = $result[\'access_token\']; return true; } /** * 上传媒体 * @param type $file 媒体文件 $url或者物理路径地址 * @param type $type 类型 * @return int * return array (size=3) \'type\' => string \'image\' (length=5) \'media_id\' => string \'-0Lr3rX9mDYBB7i5bDydvwFHHm3zW2Uxt0OoDFBPmGRfYiwckiALqHH_DlP9jCm_\' (length=64) \'created_at\' => int 1400477181 */ public function uploadMedia($file, $type = \"image\") { $file = self::complateUrl($file); $urlarr = parse_url($file); $filetype = explode(\".\", $urlarr[\'path\']); $filetype = strtolower($filetype[count($filetype) - 1]); $resizeSize = 100; //图片处理后另存质量 if (!key_exists($type, $this->mediaType) || !in_array($filetype, $this->mediaType[$type])) { // return 40005; //格式错误 $errarr = array(); $errarr[\'errcode\'] = 40005; $errarr[\'errmsg\'] = self::$errorno[$errarr[\'errcode\']]; return $errarr; } $temp_file = $this->tem_file_path . \'uploadMedia.\' . $filetype; $temp_file_resize = $this->tem_file_path . \'uploadMediaResize.\' . $filetype; file_put_contents($temp_file, self::http_get($file)); $handle = fopen($temp_file, \"r\"); $fstat = fstat($handle); if ($fstat[\'size\'] > $this->mediaMaxSize[$type]) { $resizeSize = intval($this->mediaMaxSize[$type] / $fstat[\'size\'] * 100); ImageTool::resizeImage($temp_file_resize, $temp_file, 400, 400, $resizeSize); //图片太大再处理压缩 $temp_file = $temp_file_resize; // return 40006; //大小错误 } $filePath = realpath($temp_file); $uploadUrl = sprintf(self::UPLOAD_MEDIA_URL, $this->access_token, $type); $postData = array(\"r\" => time(), \'media\' => \"@{$filePath}\"); $result = self::http_post($uploadUrl, $postData); $result = json_decode($result, TRUE); return $result; } /** * 群发图文信息 * @param type $touser 粉丝数组/粉丝组id * @param type $media_id * @return type */ public function sendArticles($touser, $media_id) { $errarr = array(); $postData = array(); $postData[\'mpnews\'] = array(\"media_id\" => $media_id); $postData[\'msgtype\'] = \"mpnews\"; if (is_array($touser)) { //用户列表群发 $postData[\'touser\'] = $touser; $url = \'https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=%s\'; } else { $group = intval($touser); $groups = $this->getGroups(true); if (key_exists($group, $groups[\'list\'])) { $postData[\'filter\'] = array(\"group_id\" => $group); } else { $errarr[\'errcode\'] = 40050; //无效分组id $errarr[\'errmsg\'] = self::$errorno[$errarr[\'errcode\']]; return $errarr; } $url = \'https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=%s\'; } $url = sprintf($url, $this->access_token); $result = self::http_post($url, self::json_encode($postData)); $result = json_decode($result, TRUE); return $result; } /** * 删除群发信息 * @param type $msgid * @return type */ public function delSend($msgid) { $url = \'https://api.weixin.qq.com/cgi-bin/message/mass/delete?access_token=%s\'; $url = sprintf($url, $this->access_token); $postData = array(\'msgid\' => $msgid, \'r\' => time()); $result = self::http_post($url, self::json_encode($postData)); $result = json_decode($result, TRUE); return $result; } /** * 群发图文素材上传 $postData = array(\'articles\' => array($item, $item,...)); $item = array( \"thumb_media_id\" => \"WMQubqCECMQwAjqh8CI500LfhyoG0vmTTlKKJM5oP-of0uLML1_2s26j8XeIorDL\", \"author\" => \"xxx\", \"title\" => \"Happy Day\", \"content_source_url\" => \"www.qq.com\", \"content\" => \"content\", \"digest\" => \"digest\" ); * return array (size=3) \'type\' => string \'news\' (length=4) \'media_id\' => string \'OuXqv2dgZzxAmK4z-tvStgr6InG18oIllWkD6Tj1qJZVRg-2f64FDU2D3J7dptHs\' (length=64) \'created_at\' => int 1400477183 */ public function uploadNews($postData) { $uploadUrl = sprintf(self::UPLOAD_NEWS_URL, $this->access_token); $result = self::http_post($uploadUrl, self::json_encode($postData)); $result = json_decode($result, TRUE); return $result; } /** * 获取粉丝列表 * @param type $nextOpenId * @return type */ public function getAllConnects($nextOpenId = \"\") { $url = \'https://api.weixin.qq.com/cgi-bin/user/get?access_token=%s&next_openid=%s\'; $url = sprintf($url, $this->access_token, $nextOpenId); $result = self::http_get($url); $result = json_decode($result, TRUE); $count = count($result[\'data\'][\'openid\']); $list = $result[\'data\'][\'openid\']; if ($result[\'data\'][\'openid\'][$count - 1] == $result[\'next_openid\']) { return $result[\'data\'][\'openid\']; } else { $templist = $this->getAllConnects($result[\'next_openid\']); $list = array_merge($list, $templist); return $list; } } /** * 根据粉丝唯一id获取微信信息 * @param type $openid * @return type */ public function getFansInfo($openid) { $url = \'https://api.weixin.qq.com/cgi-bin/user/info?access_token=%s&openid=%s〈=zh_CN\'; $url = sprintf($url, $this->access_token, $openid); $result = self::http_get($url); $result = json_decode($result, TRUE); return $result; } /** * 更新粉丝组信息 * @param type $openid * @param type $groupid * @return type */ public function updateFansGroups($openid, $groupid) { $url = \'https://api.weixin.qq.com/cgi-bin/groups/members/update?access_token=%s\'; $url = sprintf($url, $this->access_token); $postData = array(\"to_groupid\" => $groupid, \'openid\' => $openid); $result = self::http_post($url, self::json_encode($postData)); $result = json_decode($result, TRUE); $this->getGroups(true); return $result; } /** * 获取粉丝组信息 * @param type $openid * @return type */ public function getFansGroupInfo($openid) { $url = \'https://api.weixin.qq.com/cgi-bin/groups/getid?access_token=%s\'; $url = sprintf($url, $this->access_token); $postData = array(\"r\" => time(), \'openid\' => $openid); $result = self::http_post($url, self::json_encode($postData)); $result = json_decode($result, TRUE); return $result[\'groupid\']; } /** * 获取唯一key * @param type $key * @return type */ public function getKey($key) { return md5($this->appid . $this->appsecret . $key); } /** * 获取媒体图片到本地 * @param type $mediaid * @return string */ public function getMedia($mediaid) { $url = sprintf(self::GET_MEDIA_URL, $this->access_token, $mediaid); $result = self::http_get($url); $temp_file = $this->tem_file_path . \'getMedia.jpg\'; file_put_contents($temp_file, $result); return $temp_file; } /** * 用户组 * @param type $flag 强制刷新用户组 * @return type */ public function getGroups($flag = false) { $key = $this->appid . \'gasdfev\' . $this->appsecret; $result = Cache::get($key); if (empty($result) || $flag) { $url = \'https://api.weixin.qq.com/cgi-bin/groups/get?access_token=%s\'; $url = sprintf($url, $this->access_token); $result = self::http_get($url); $result = json_decode($result, TRUE); $temg = array(); $temlist = array(); foreach ($result[\'groups\'] as $k => $v) { $temg[$v[\'id\']] = $v; $temlist[$v[\'id\']] = $v[\'name\']; } $result[\'map\'] = $temg; $result[\'list\'] = $temlist; Cache::set($key, $result); } return $result; } /** * 新增用户组 * @param type $name * @return type */ public function createGroup($name) { $url = \'https://api.weixin.qq.com/cgi-bin/groups/create?access_token=%s\'; $url = sprintf($url, $this->access_token); $result = self::http_post($url, self::json_encode(array(\'group\' => array(\'name\' => $name)))); $result = json_decode($result, TRUE); return $result; } /** * 修改用户组 * @param type $id * @param type $name * @return type */ public function modifyGroup($id, $name) { $url = \'https://api.weixin.qq.com/cgi-bin/groups/update?access_token=%s\'; $url = sprintf($url, $this->access_token); $result = self::http_post($url, self::json_encode(array(\'group\' => array(\'id\' => $id, \'name\' => $name)))); $result = json_decode($result, TRUE); return $result; } /** * 多客服接入 * @global type $wid * @param type $postObj */ public static function responseService($postObj) { global $wid; $fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName; $textTpl = \"<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[transfer_customer_service]]></MsgType> </xml>\"; $resstr = sprintf($textTpl, $fromUsername, $toUsername, time()); echo $resstr; } /** * 微信回复多图文 * @global type $wid * @param type $res * array(array(),array() * ); * @param type $rid * @param type $postObj */ public static function response_morearts($res, $postObj) { global $wid; $fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName; $textTpl = \"<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <ArticleCount>%s</ArticleCount> <Articles> ITEM </Articles> </xml>\"; $resstr = sprintf($textTpl, $fromUsername, $toUsername, time(), \"news\", count($res)); $item = \'\'; $subitem = \"<item> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <PicUrl><![CDATA[%s]]></PicUrl> <Url><![CDATA[%s]]></Url> </item>\"; foreach ($res as $r) { $r[\'url\'] = self::parseUrl($r[\'url\']); $item .= sprintf($subitem, $r[\'tit\'], $r[\'des\'], self::complateUrl($r[\'pic\']), self::replaceToWXUrl(self::complateUrl($r[\'url\']), $postObj)); } $resstr = str_replace(\'ITEM\', $item, $resstr); echo $resstr; } /** * url解析 * @param type $url * @return string */ public static function complateUrl($url) { if (false === stristr($url, \"http://\")) {//查找http:// 如果不存在 if (0 === strpos($url, \'/\')) {//查找首字母 如果存在 $url = substr($url, 1); //去除/ } $url = \"http://\" . $_SERVER[\'HTTP_HOST\'] . \'/\' . $url; //拼接完整路径 } return $url; } /** * 微信url固定参数替换 * @param type $url * @param type $postObj * @return type */ public static function replaceToWXUrl($url, $postObj) { global $wechatid; return str_ireplace(\'fromUsername\', $wechatid, $url); } /** * 完成以下行为 * parseUrlParam * setUrlPublicParam * buildUrlParam * @param type $url * @param type $other 附加参数 基础参数wid wxid wechatid */ public static function parseUrl($url, $other = array()) { $url = self::parseUrlParam($url); $url = self::setUrlPublicParam($url); if (is_array($other) && !empty($other)) { $url[\'param\'] = array_merge($url[\'param\'], $other); } $url = self::buildUrlParam($url); return $url; } /** * 分析url * @param type $url * @return type */ public static function parseUrlParam($url) { $temp = explode(\"?\", $url); $url0 = $temp[0]; $url1 = $temp[1]; $p = explode(\"&\", $url1); $param = array(); foreach ($p as $v) { $tempp = explode(\"=\", $v); $param[$tempp[0]] = $tempp[1]; } return array(\"url\" => $url0, \"param\" => $param); } /** * 组装url * @param type $arr * @return type */ public static function buildUrlParam($arr) { $url = $arr[\'url\']; $param = $arr[\'param\']; $param_arr = array(); foreach ($param as $k => $v) { if ($k == \"\") continue; $param_arr[] = $k . \"=\" . $v; } return $url . \"?\" . implode(\"&\", $param_arr) . \"#mp.weixin.qq.com\"; } /** * 设置微信保留参数信息 * @global type $uid * @global type $wid * @global type $wechatid * @param type $url * @return type */ public static function setUrlPublicParam($url) { global $uid, $wid, $wechatid; $url[\'param\'][\'wid\'] = $wid; $url[\'param\'][\'wxid\'] = $wechatid; $url[\'param\'][\'wechatid\'] = $wechatid; return $url; } public static $errorno = array( \'-1\' => \'系统繁忙\', \'0\' => \'请求成功\', \'40001\' => \'获取access_token时AppSecret错误,或者access_token无效\', \'40002\' => \'不合法的凭证类型\', \'40003\' => \'不合法的OpenID\', \'40004\' => \'不合法的媒体文件类型\', \'40005\' => \'不合法的文件类型\', \'40006\' => \'不合法的文件大小\', \'40007\' => \'不合法的媒体文件id\', \'40008\' => \'不合法的消息类型\', \'40009\' => \'不合法的图片文件大小\', \'40010\' => \'不合法的语音文件大小\', \'40011\' => \'不合法的视频文件大小\', \'40012\' => \'不合法的缩略图文件大小\', \'40013\' => \'不合法的APPID\', \'40014\' => \'不合法的access_token\', \'40015\' => \'不合法的菜单类型\', \'40016\' => \'不合法的按钮个数\', \'40017\' => \'不合法的按钮个数\', \'40018\' => \'不合法的按钮名字长度\', \'40019\' => \'不合法的按钮KEY长度\', \'40020\' => \'不合法的按钮URL长度\', \'40021\' => \'不合法的菜单版本号\', \'40022\' => \'不合法的子菜单级数\', \'40023\' => \'不合法的子菜单按钮个数\', \'40024\' => \'不合法的子菜单按钮类型\', \'40025\' => \'不合法的子菜单按钮名字长度\', \'40026\' => \'不合法的子菜单按钮KEY长度\', \'40027\' => \'不合法的子菜单按钮URL长度\', \'40028\' => \'不合法的自定义菜单使用用户\', \'40029\' => \'不合法的oauth_code\', \'40030\' => \'不合法的refresh_token\', \'40031\' => \'不合法的openid列表\', \'40032\' => \'不合法的openid列表长度\', \'40033\' => \'不合法的请求字符,不能包含\\uxxxx格式的字符\', \'40035\' => \'不合法的参数\', \'40038\' => \'不合法的请求格式\', \'40039\' => \'不合法的URL长度\', \'40050\' => \'不合法的分组id\', \'40051\' => \'分组名字不合法\', \'40059\' => \'不合法的消息id\', \'41001\' => \'缺少access_token参数\', \'41002\' => \'缺少appid参数\', \'41003\' => \'缺少refresh_token参数\', \'41004\' => \'缺少secret参数\', \'41005\' => \'缺少多媒体文件数据\', \'41006\' => \'缺少media_id参数\', \'41007\' => \'缺少子菜单数据\', \'41008\' => \'缺少oauth code\', \'41009\' => \'缺少openid\', \'42001\' => \'access_token超时\', \'42002\' => \'refresh_token超时\', \'42003\' => \'oauth_code超时\', \'43001\' => \'需要GET请求\', \'43002\' => \'需要POST请求\', \'43003\' => \'需要HTTPS请求\', \'43004\' => \'需要接收者关注\', \'43005\' => \'需要好友关系\', \'44001\' => \'多媒体文件为空\', \'44002\' => \'POST的数据包为空\', \'44003\' => \'图文消息内容为空\', \'44004\' => \'文本消息内容为空\', \'45001\' => \'多媒体文件大小超过限制\', \'45002\' => \'消息内容超过限制\', \'45003\' => \'标题字段超过限制\', \'45004\' => \'描述字段超过限制\', \'45005\' => \'链接字段超过限制\', \'45006\' => \'图片链接字段超过限制\', \'45007\' => \'语音播放时间超过限制\', \'45008\' => \'图文消息超过限制\', \'45009\' => \'接口调用超过限制\', \'45010\' => \'创建菜单个数超过限制\', \'45015\' => \'回复时间超过限制\', \'45016\' => \'系统分组,不允许修改\', \'45017\' => \'分组名字过长\', \'45018\' => \'分组数量超过上限\', \'46001\' => \'不存在媒体数据\', \'46002\' => \'不存在的菜单版本\', \'46003\' => \'不存在的菜单数据\', \'46004\' => \'不存在的用户\', \'47001\' => \'解析JSON/XML内容错误\', \'48001\' => \'api功能未授权\', \'50001\' => \'用户未授权该api\' ); /** * GET 请求 * @param string $url */ public static function http_get($url) { if (!function_exists(\'curl_init\')) { die(\'curl 未开启\'); }; $oCurl = curl_init(); if (stripos($url, \"https://\") !== FALSE) { curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, FALSE); } curl_setopt($oCurl, CURLOPT_URL, $url); curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1); $sContent = curl_exec($oCurl); $aStatus = curl_getinfo($oCurl); curl_close($oCurl); if (intval($aStatus[\"http_code\"]) == 200) { return $sContent; } else { return false; } } /** * POST 请求 * @param string $url * @param array $param * @return string content */ public static function http_post($url, $param, $httpBuildQuery = false) { if (!function_exists(\'curl_init\')) { die(\'curl 未开启\'); }; $oCurl = curl_init(); if (stripos($url, \"https://\") !== FALSE) { curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, false); } curl_setopt($oCurl, CURLOPT_URL, $url); curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1); // curl_setopt($oCurl, CURLOPT_HTTPHEADER, $header);//设置HTTP头 curl_setopt($oCurl, CURLOPT_POST, 1); if ($httpBuildQuery) { $param = http_build_query($param); } curl_setopt($oCurl, CURLOPT_POSTFIELDS, $param); $sContent = curl_exec($oCurl); $aStatus = curl_getinfo($oCurl); curl_close($oCurl); if (intval($aStatus[\"http_code\"]) == 200) { return $sContent; } else { return false; } } /** * 微信api不支持中文转义的json结构 * @param array $arr */ static function json_encode($arr) { $parts = array(); $is_list = false; //Find out if the given array is a numerical array $keys = array_keys($arr); $max_length = count($arr) - 1; if (($keys [0] === 0) && ($keys [$max_length] === $max_length )) { //See if the first key is 0 and last key is length - 1 $is_list = true; for ($i = 0; $i < count($keys); $i ++) { //See if each key correspondes to its position if ($i != $keys [$i]) { //A key fails at position check. $is_list = false; //It is an associative array. break; } } } foreach ($arr as $key => $value) { if (is_array($value)) { //Custom handling for arrays if ($is_list) $parts [] = self::json_encode($value); /* :RECURSION: */ else $parts [] = \'\"\' . $key . \'\":\' . self::json_encode($value); /* :RECURSION: */ } else { $str = \'\'; if (!$is_list) $str = \'\"\' . $key . \'\":\'; //Custom handling for multiple data types if (is_numeric($value) && $value < 2000000000) $str .= $value; //Numbers elseif ($value === false) $str .= \'false\'; //The booleans elseif ($value === true) $str .= \'true\'; else $str .= \'\"\' . addslashes($value) . \'\"\'; //All other things // :TODO: Is there any more datatype we should be in the lookout for? (Object?) $parts [] = $str; } } $json = implode(\',\', $parts); if ($is_list) return \'[\' . $json . \']\'; //Return numerical JSON return \'{\' . $json . \'}\'; //Return associative JSON } }
以上就是本文的全部内容,希望对大家学习php程序设计有所帮助。
本文地址:https://www.stayed.cn/item/914
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我