diff options
Diffstat (limited to 'bin/utils.php')
-rw-r--r-- | bin/utils.php | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/bin/utils.php b/bin/utils.php index 4fe3484..2324032 100644 --- a/bin/utils.php +++ b/bin/utils.php @@ -136,5 +136,50 @@ function isurlvalid($url, $type) return 1; } +if (!function_exists('json_encode')) +{ + function json_encode($a=false) + { + if (is_null($a)) return 'null'; + if ($a === false) return 'false'; + if ($a === true) return 'true'; + if (is_scalar($a)) + { + if (is_float($a)) + { + // Always use "." for floats. + return floatval(str_replace(",", ".", strval($a))); + } + + if (is_string($a)) + { + static $jsonReplaces = array(array("\\", "/", "\n", "\t", "\r", "\b", "\f", '"'), array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"')); + return '"' . str_replace($jsonReplaces[0], $jsonReplaces[1], $a) . '"'; + } + else + return $a; + } + $isList = true; + for ($i = 0, reset($a); $i < count($a); $i++, next($a)) + { + if (key($a) !== $i) + { + $isList = false; + break; + } + } + $result = array(); + if ($isList) + { + foreach ($a as $v) $result[] = json_encode($v); + return '[' . join(',', $result) . ']'; + } + else + { + foreach ($a as $k => $v) $result[] = json_encode($k).':'.json_encode($v); + return '{' . join(',', $result) . '}'; + } + } +} ?> |