encode($dataArray); } } public function encode($dataArray) { if (function_exists("json_encode")) { $this->result = json_encode($dataArray); } else { $this->result = $this->php_json_encode($dataArray); } } // Taken from php.net private function php_json_encode($arr) { $json_str = ""; if(is_array($arr)) { $pure_array = true; $array_length = count($arr); for($i=0;$i<$array_length;$i++) { if(! isset($arr[$i])) { $pure_array = false; break; } } if($pure_array) { $json_str ="["; $temp = array(); for($i=0;$i<$array_length;$i++) { $temp[] = sprintf("%s", $this->php_json_encode($arr[$i])); } $json_str .= implode(",",$temp); $json_str .="]"; } else { $json_str ="{"; $temp = array(); foreach($arr as $key => $value) { $temp[] = sprintf("\"%s\":%s", $key, $this->php_json_encode($value)); } $json_str .= implode(",",$temp); $json_str .="}"; } } else { if(is_string($arr)) { $json_str = "\"". $this->json_encode_string($arr) . "\""; } else if(is_numeric($arr)) { $json_str = $arr; } else { $json_str = "\"". $this->json_encode_string($arr) . "\""; } } return $json_str; } private function json_encode_string($in_str) { mb_internal_encoding("UTF-8"); $convmap = array(0x80, 0xFFFF, 0, 0xFFFF); $str = ""; for($i=mb_strlen($in_str)-1; $i>=0; $i--) { $mb_char = mb_substr($in_str, $i, 1); if(mb_ereg("&#(\\d+);", mb_encode_numericentity($mb_char, $convmap, "UTF-8"), $match)) { $str = sprintf("\\u%04x", $match[1]) . $str; } else { $str = $mb_char . $str; } } return $str; } public function __toString() { return $this->result; } } ?>