⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 json.php

📁 zapatec suite 最新版 20070204,非常棒的ajax widgets 工具包
💻 PHP
📖 第 1 页 / 共 3 页
字号:
                            $ascii .= '\b';                            break;                        case $ord_var_c == 0x09:                            $ascii .= '\t';                            break;                        case $ord_var_c == 0x0A:                            $ascii .= '\n';                            break;                        case $ord_var_c == 0x0C:                            $ascii .= '\f';                            break;                        case $ord_var_c == 0x0D:                            $ascii .= '\r';                            break;                        case $ord_var_c == 0x22:                        case $ord_var_c == 0x2F:                        case $ord_var_c == 0x5C:                            // double quote, slash, slosh                            $ascii .= '\\'.$var{$c};                            break;                                                    case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):                            // characters U-00000000 - U-0000007F (same as ASCII)                            $ascii .= $var{$c};                            break;                                                case (($ord_var_c & 0xE0) == 0xC0):                            // characters U-00000080 - U-000007FF, mask 110XXXXX                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8                            $char = pack('C*', $ord_var_c, ord($var{$c + 1}));                            $c += 1;                            $utf16 = $this->utf82utf16($char);                            $ascii .= sprintf('\u%04s', bin2hex($utf16));                            break;                            case (($ord_var_c & 0xF0) == 0xE0):                            // characters U-00000800 - U-0000FFFF, mask 1110XXXX                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8                            $char = pack('C*', $ord_var_c,                                         ord($var{$c + 1}),                                         ord($var{$c + 2}));                            $c += 2;                            $utf16 = $this->utf82utf16($char);                            $ascii .= sprintf('\u%04s', bin2hex($utf16));                            break;                            case (($ord_var_c & 0xF8) == 0xF0):                            // characters U-00010000 - U-001FFFFF, mask 11110XXX                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8                            $char = pack('C*', $ord_var_c,                                         ord($var{$c + 1}),                                         ord($var{$c + 2}),                                         ord($var{$c + 3}));                            $c += 3;                            $utf16 = $this->utf82utf16($char);                            $ascii .= sprintf('\u%04s', bin2hex($utf16));                            break;                            case (($ord_var_c & 0xFC) == 0xF8):                            // characters U-00200000 - U-03FFFFFF, mask 111110XX                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8                            $char = pack('C*', $ord_var_c,                                         ord($var{$c + 1}),                                         ord($var{$c + 2}),                                         ord($var{$c + 3}),                                         ord($var{$c + 4}));                            $c += 4;                            $utf16 = $this->utf82utf16($char);                            $ascii .= sprintf('\u%04s', bin2hex($utf16));                            break;                            case (($ord_var_c & 0xFE) == 0xFC):                            // characters U-04000000 - U-7FFFFFFF, mask 1111110X                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8                            $char = pack('C*', $ord_var_c,                                         ord($var{$c + 1}),                                         ord($var{$c + 2}),                                         ord($var{$c + 3}),                                         ord($var{$c + 4}),                                         ord($var{$c + 5}));                            $c += 5;                            $utf16 = $this->utf82utf16($char);                            $ascii .= sprintf('\u%04s', bin2hex($utf16));                            break;                    }                }                                return '"'.$ascii.'"';                            case 'array':               /*                * As per JSON spec if any array key is not an integer                * we must treat the the whole array as an object. We                * also try to catch a sparsely populated associative                * array with numeric keys here because some JS engines                * will create an array with empty indexes up to                * max_index which can cause memory issues and because                * the keys, which may be relevant, will be remapped                * otherwise.                *                 * As per the ECMA and JSON specification an object may                * have any string as a property. Unfortunately due to                * a hole in the ECMA specification if the key is a                * ECMA reserved word or starts with a digit the                * parameter is only accessible using ECMAScript's                * bracket notation.                */                                // treat as a JSON object                  if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) {                    $properties = array_map(array($this, 'name_value'),                                            array_keys($var),                                            array_values($var));                                    foreach($properties as $property)                        if(Services_JSON::isError($property))                            return $property;                                        return '{' . join(',', $properties) . '}';                }                // treat it like a regular array                $elements = array_map(array($this, 'encode'), $var);                                foreach($elements as $element)                    if(Services_JSON::isError($element))                        return $element;                                return '[' . join(',', $elements) . ']';                            case 'object':                $vars = get_object_vars($var);                $properties = array_map(array($this, 'name_value'),                                        array_keys($vars),                                        array_values($vars));                            foreach($properties as $property)                    if(Services_JSON::isError($property))                        return $property;                                return '{' . join(',', $properties) . '}';            default:                return ($this->use & SERVICES_JSON_SUPPRESS_ERRORS)                    ? 'null'                    : new Services_JSON_Error(gettype($var)." can not be encoded as JSON string");        }    }       /**    * array-walking function for use in generating JSON-formatted name-value pairs    *    * @param    string  $name   name of key to use    * @param    mixed   $value  reference to an array element to be encoded    *    * @return   string  JSON-formatted name-value pair, like '"name":value'    * @access   private    */    function name_value($name, $value)    {        $encoded_value = $this->encode($value);                if(Services_JSON::isError($encoded_value))            return $encoded_value;            return $this->encode(strval($name)) . ':' . $encoded_value;    }           /**    * reduce a string by removing leading and trailing comments and whitespace    *    * @param    $str    string      string value to strip of comments and whitespace    *    * @return   string  string value stripped of comments and whitespace    * @access   private    */    function reduce_string($str)    {        $str = preg_replace(array(                        // eliminate single line comments in '// ...' form                '#^\s*//(.+)$#m',                    // eliminate multi-line comments in '/* ... */' form, at start of string                '#^\s*/\*(.+)\*/#Us',                    // eliminate multi-line comments in '/* ... */' form, at end of string                '#/\*(.+)\*/\s*$#Us'                ), '', $str);                // eliminate extraneous space        return trim($str);    }   /**    * decodes a JSON string into appropriate variable    *    * @param    string  $str    JSON-formatted string    *    * @return   mixed   number, boolean, string, array, or object    *                   corresponding to given JSON input string.    *                   See argument 1 to Services_JSON() above for object-output behavior.    *                   Note that decode() always returns strings    *                   in ASCII or UTF-8 format!    * @access   public    */    function decode($str)    {        $str = $this->reduce_string($str);            switch (strtolower($str)) {            case 'true':                return true;            case 'false':                return false;                        case 'null':                return null;                        default:                if (is_numeric($str)) {                    // Lookie-loo, it's a number                    // This would work on its own, but I'm trying to be                    // good about returning integers where appropriate:                    // return (float)$str;                    // Return float or int, as appropriate                    return ((float)$str == (integer)$str)                        ? (integer)$str                        : (float)$str;                                    } elseif (preg_match('/^("|\').*(\1)$/s', $str, $m) && $m[1] == $m[2]) {                    // STRINGS RETURNED IN UTF-8 FORMAT                    $delim = substr($str, 0, 1);                    $chrs = substr($str, 1, -1);                    $utf8 = '';                    $strlen_chrs = strlen($chrs);                                        for ($c = 0; $c < $strlen_chrs; ++$c) {                                            $substr_chrs_c_2 = substr($chrs, $c, 2);                        $ord_chrs_c = ord($chrs{$c});                                                switch (true) {                            case $substr_chrs_c_2 == '\b':                                $utf8 .= chr(0x08);                                ++$c;                                break;                            case $substr_chrs_c_2 == '\t':                                $utf8 .= chr(0x09);                                ++$c;                                break;                            case $substr_chrs_c_2 == '\n':                                $utf8 .= chr(0x0A);                                ++$c;                                break;                            case $substr_chrs_c_2 == '\f':                                $utf8 .= chr(0x0C);                                ++$c;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -