json数据大家应该遇到过,json_encode()和json_decode()是php5.0以后加上的内置函数,如果低版本要使用,需加扩展,很多时候我们无权改变服务器的配置,我们只能通过自定义函数来实现这两个函数,其实所有的系统内置函数,基本上我们都是可以自己来定义的。
if (!function_exists('json_encode')) { function json_encode($array = array()) { if(!is_array($array)) return null; $json = ""; $i = 1; $comma = ","; $count = count($array); foreach($array as $k=>$v){ if($i==$count) $comma = ""; if(!is_array($v)){ $v = addslashes($v); $json .= '"'.$k.'":"'.$v.'"'.$comma; } else{ $json .= '"'.$k.'":'.json_encode($v).$comma; } $i++; } $json = '{'.$json.'}'; return $json; } } if (!function_exists('json_decode')) { function json_decode($json, $assoc = true) { $comment = false; $out = '$x='; $json = preg_replace('/:([^"}]+?)([,|}])/i', ':"1″2′, $json); for ($i=0; $i<strlen($json); $i++) { if (!$comment) { if (($json[$i] == '{') || ($json[$i] == '[')) { $out .= 'array('; } elseif (($json[$i] == '}') || ($json[$i] == ']')) { $out .= ')'; } elseif ($json[$i] == ':') { $out .= '=>'; } elseif ($json[$i] == ',') { $out .= ','; } elseif ($json[$i] == '"') { $out .= '"'; } } else $out .= $json[$i] == '$' ? '$' : $json[$i]; if ($json[$i] == '"' && $json[($i-1)] != '\') $comment = !$comment; } eval($out. ';'); return $x; } }