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

📄 json.php

📁 ajax框架原吗,dojo目前很流行的,希望大家多多学习啊
💻 PHP
📖 第 1 页 / 共 3 页
字号:
<?php/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: *//** * Converts to and from JSON format.* * JSON (JavaScript Object Notation) is a lightweight data-interchange* format. It is easy for humans to read and write. It is easy for machines* to parse and generate. It is based on a subset of the JavaScript* Programming Language, Standard ECMA-262 3rd Edition - December 1999.* This feature can also be found in  Python. JSON is a text format that is* completely language independent but uses conventions that are familiar* to programmers of the C-family of languages, including C, C++, C#, Java,* JavaScript, Perl, TCL, and many others. These properties make JSON an* ideal data-interchange language.* * This package provides a simple encoder and decoder for JSON notation. It* is intended for use with client-side Javascript applications that make* use of HTTPRequest to perform server communication functions - data can* be encoded into JSON notation for use in a client-side javascript, or* decoded from incoming Javascript requests. JSON format is native to* Javascript, and can be directly eval()'ed with no further parsing* overhead** All strings should be in ASCII or UTF-8 format!** LICENSE: Redistribution and use in source and binary forms, with or* without modification, are permitted provided that the following* conditions are met: Redistributions of source code must retain the* above copyright notice, this list of conditions and the following* disclaimer. Redistributions in binary form must reproduce the above* copyright notice, this list of conditions and the following disclaimer* in the documentation and/or other materials provided with the* distribution.* * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN* NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH* DAMAGE.* * @category   * @package     Services_JSON* @author      Michal Migurski <mike-json@teczno.com>* @author      Matt Knapp <mdknapp[at]gmail[dot]com>* @author      Brett Stimmerman <brettstimmerman[at]gmail[dot]com>* @copyright   2005 Michal Migurski* @license     http://www.opensource.org/licenses/bsd-license.php* @link        http://pear.php.net/pepr/pepr-proposal-show.php?id=198*//*** Marker constant for Services_JSON::decode(), used to flag stack state*/define('SERVICES_JSON_SLICE',   1);/*** Marker constant for Services_JSON::decode(), used to flag stack state*/define('SERVICES_JSON_IN_STR',  2);/*** Marker constant for Services_JSON::decode(), used to flag stack state*/define('SERVICES_JSON_IN_ARR',  4);/*** Marker constant for Services_JSON::decode(), used to flag stack state*/define('SERVICES_JSON_IN_OBJ',  8);/*** Marker constant for Services_JSON::decode(), used to flag stack state*/define('SERVICES_JSON_IN_CMT', 16);/*** Behavior switch for Services_JSON::decode()*/define('SERVICES_JSON_LOOSE_TYPE', 10);/*** Behavior switch for Services_JSON::decode()*/define('SERVICES_JSON_STRICT_TYPE', 11);/*** Encodings*/define('SERVICES_JSON_ISO_8859_1', 'iso-8859-1');define('SERVICES_JSON_UTF_8', 'utf-8');/** * Converts to and from JSON format.** Brief example of use:** <code>* // create a new instance of Services_JSON* $json = new Services_JSON();* * // convert a complexe value to JSON notation, and send it to the browser* $value = array('foo', 'bar', array(1, 2, 'baz'), array(3, array(4)));* $output = $json->encode($value);** print($output);* // prints: ["foo","bar",[1,2,"baz"],[3,[4]]]* * // accept incoming POST data, assumed to be in JSON notation* $input = file_get_contents('php://input', 1000000);* $value = $json->decode($input);* </code>*/class Services_JSON{   /**    * constructs a new JSON instance    *		//>> SJM2005    * @param    string  $encoding 	Strings are input/output in this encoding    * @param    int    $encode 	Encode input is expected in this character encoding		//<< SJM2005		*    * @param    int     $use    object behavior: when encoding or decoding,    *                           be loose or strict about object/array usage    *    *                           possible values:    *                           - SERVICES_JSON_STRICT_TYPE: strict typing, default.    *                                                        "{...}" syntax creates objects in decode().    *                           - SERVICES_JSON_LOOSE_TYPE:  loose typing.    *                                                        "{...}" syntax creates associative arrays in decode().    */    function Services_JSON($encoding = SERVICES_JSON_UTF_8, $use = SERVICES_JSON_STRICT_TYPE)    {			//>> SJM2005			$this->encoding = $encoding;			//<< SJM2005						$this->use = $use;    }   /**    * convert a string from one UTF-16 char to one UTF-8 char    *    * Normally should be handled by mb_convert_encoding, but    * provides a slower PHP-only method for installations    * that lack the multibye string extension.    *    * @param    string  $utf16  UTF-16 character    * @return   string  UTF-8 character    * @access   private    */    function utf162utf8($utf16)    {        // oh please oh please oh please oh please oh please        if(function_exists('mb_convert_encoding'))            return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16');                $bytes = (ord($utf16{0}) << 8) | ord($utf16{1});        switch(true) {            case ((0x7F & $bytes) == $bytes):                // this case should never be reached, because we are in ASCII range                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8                return chr(0x7F & $bytes);            case (0x07FF & $bytes) == $bytes:                // return a 2-byte UTF-8 character                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8                return chr(0xC0 | (($bytes >> 6) & 0x1F))                     . chr(0x80 | ($bytes & 0x3F));            case (0xFFFF & $bytes) == $bytes:                // return a 3-byte UTF-8 character                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8                return chr(0xE0 | (($bytes >> 12) & 0x0F))                     . chr(0x80 | (($bytes >> 6) & 0x3F))                     . chr(0x80 | ($bytes & 0x3F));        }        // ignoring UTF-32 for now, sorry        return '';    }           /**    * convert a string from one UTF-8 char to one UTF-16 char    *    * Normally should be handled by mb_convert_encoding, but    * provides a slower PHP-only method for installations    * that lack the multibye string extension.    *    * @param    string  $utf8   UTF-8 character    * @return   string  UTF-16 character    * @access   private    */    function utf82utf16($utf8)    {        // oh please oh please oh please oh please oh please        if(function_exists('mb_convert_encoding'))            return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8');                switch(strlen($utf8)) {            case 1:                // this case should never be reached, because we are in ASCII range                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8                return $ut8;            case 2:                // return a UTF-16 character from a 2-byte UTF-8 char                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8                return chr(0x07 & (ord($utf8{0}) >> 2))                     . chr((0xC0 & (ord($utf8{0}) << 6))                         | (0x3F & ord($utf8{1})));                            case 3:                // return a UTF-16 character from a 3-byte UTF-8 char                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8                return chr((0xF0 & (ord($utf8{0}) << 4))                         | (0x0F & (ord($utf8{1}) >> 2)))                     . chr((0xC0 & (ord($utf8{1}) << 6))                         | (0x7F & ord($utf8{2})));        }        // ignoring UTF-32 for now, sorry        return '';    }           /**    * encodes an arbitrary variable into JSON format    *    * @param    mixed   $var    any number, boolean, string, array, or object to be encoded.    *                           see argument 1 to Services_JSON() above for array-parsing behavior.    *                           if var is a strng, note that encode() always expects it    *                           to be in ASCII or UTF-8 format!    *    * @return   string  JSON string representation of input var    * @access   public    */    function encode($var)    {        switch (gettype($var)) {            case 'boolean':                return $var ? 'true' : 'false';                        case 'NULL':                return 'null';                        case 'integer':                return (int) $var;                            case 'double':            case 'float':                return (float) $var;                            case 'string':								//>> SJM2005								if ($this->encoding == SERVICES_JSON_UTF_8)									;								else if ($this->encoding == SERVICES_JSON_ISO_8859_1)

⌨️ 快捷键说明

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