Vergleich inc/3rdparty/json/json.php - 1.8.1 - 1.8.36

  Keine Änderungen   Hinzugefügt   Modifiziert   Entfernt
Zeile 2Zeile 2
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */

/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */

 

// Disallow direct access to this file for security reasons
if(!defined("IN_MYBB"))
{
die("Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");
}


/**
* Converts to and from JSON format.


/**
* Converts to and from JSON format.

Zeile 153Zeile 159
            return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16');
}


            return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16');
}


        $bytes = (ord($utf16{0}) << 8) | ord($utf16{1});

        $bytes = (ord($utf16[0]) << 8) | ord($utf16[1]);


switch(true) {
case ((0x7F & $bytes) == $bytes):


switch(true) {
case ((0x7F & $bytes) == $bytes):

Zeile 206Zeile 212
            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

            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})));

                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


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})));

                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

        }

// ignoring UTF-32 for now, sorry

Zeile 261Zeile 267
                */
for ($c = 0; $c < $strlen_var; ++$c) {


                */
for ($c = 0; $c < $strlen_var; ++$c) {


                    $ord_var_c = ord($var{$c});

                    $ord_var_c = ord($var[$c]);


switch (true) {
case $ord_var_c == 0x08:


switch (true) {
case $ord_var_c == 0x08:

Zeile 284Zeile 290
                        case $ord_var_c == 0x2F:
case $ord_var_c == 0x5C:
// double quote, slash, slosh

                        case $ord_var_c == 0x2F:
case $ord_var_c == 0x5C:
// double quote, slash, slosh

                            $ascii .= '\\'.$var{$c};

                            $ascii .= '\\'.$var[$c];

                            break;

case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
// characters U-00000000 - U-0000007F (same as ASCII)

                            break;

case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
// characters U-00000000 - U-0000007F (same as ASCII)

                            $ascii .= $var{$c};

                            $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

                            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}));

                            $char = pack('C*', $ord_var_c, ord($var[$c + 1]));

                            $c += 1;
$utf16 = $this->utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));

                            $c += 1;
$utf16 = $this->utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));

Zeile 305Zeile 311
                            // 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,

                            // 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}));

                                         ord($var[$c + 1]),
ord($var[$c + 2]));

                            $c += 2;
$utf16 = $this->utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));

                            $c += 2;
$utf16 = $this->utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));

Zeile 316Zeile 322
                            // 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,

                            // 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}));

                                         ord($var[$c + 1]),
ord($var[$c + 2]),
ord($var[$c + 3]));

                            $c += 3;
$utf16 = $this->utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));

                            $c += 3;
$utf16 = $this->utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));

Zeile 328Zeile 334
                            // 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,

                            // 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}));

                                         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));

                            $c += 4;
$utf16 = $this->utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));

Zeile 341Zeile 347
                            // 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,

                            // 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}));

                                         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));

                            $c += 5;
$utf16 = $this->utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));

Zeile 520Zeile 526
                    for ($c = 0; $c < $strlen_chrs; ++$c) {

$substr_chrs_c_2 = substr($chrs, $c, 2);

                    for ($c = 0; $c < $strlen_chrs; ++$c) {

$substr_chrs_c_2 = substr($chrs, $c, 2);

                        $ord_chrs_c = ord($chrs{$c});

                        $ord_chrs_c = ord($chrs[$c]);


switch (true) {
case $substr_chrs_c_2 == '\b':


switch (true) {
case $substr_chrs_c_2 == '\b':

Zeile 550Zeile 556
                            case $substr_chrs_c_2 == '\\/':
if (($delim == '"' && $substr_chrs_c_2 != '\\\'') ||
($delim == "'" && $substr_chrs_c_2 != '\\"')) {

                            case $substr_chrs_c_2 == '\\/':
if (($delim == '"' && $substr_chrs_c_2 != '\\\'') ||
($delim == "'" && $substr_chrs_c_2 != '\\"')) {

                                    $utf8 .= $chrs{++$c};

                                    $utf8 .= $chrs[++$c];

                                }
break;


                                }
break;


Zeile 563Zeile 569
                                break;

case ($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F):

                                break;

case ($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F):

                                $utf8 .= $chrs{$c};

                                $utf8 .= $chrs[$c];

                                break;

case ($ord_chrs_c & 0xE0) == 0xC0:

                                break;

case ($ord_chrs_c & 0xE0) == 0xC0:

Zeile 610Zeile 616
                } elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) {
// array, or object notation


                } elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) {
// array, or object notation


                    if ($str{0} == '[') {

                    if ($str[0] == '[') {

                        $stk = array(SERVICES_JSON_IN_ARR);
$arr = array();
} else {

                        $stk = array(SERVICES_JSON_IN_ARR);
$arr = array();
} else {

Zeile 649Zeile 655
                        $top = end($stk);
$substr_chrs_c_2 = substr($chrs, $c, 2);


                        $top = end($stk);
$substr_chrs_c_2 = substr($chrs, $c, 2);


                        if (($c == $strlen_chrs) || (($chrs{$c} == ',') && ($top['what'] == SERVICES_JSON_SLICE))) {

                        if (($c == $strlen_chrs) || (($chrs[$c] == ',') && ($top['what'] == SERVICES_JSON_SLICE))) {

                            // found a comma that is not inside a string, array, etc.,
// OR we've reached the end of the character list
$slice = substr($chrs, $top['where'], ($c - $top['where']));

                            // found a comma that is not inside a string, array, etc.,
// OR we've reached the end of the character list
$slice = substr($chrs, $top['where'], ($c - $top['where']));

Zeile 691Zeile 697

}



}


                        } elseif ((($chrs{$c} == '"') || ($chrs{$c} == "'")) && ($top['what'] != SERVICES_JSON_IN_STR)) {

                        } elseif ((($chrs[$c] == '"') || ($chrs[$c] == "'")) && ($top['what'] != SERVICES_JSON_IN_STR)) {

                            // found a quote, and we are not inside a string

                            // found a quote, and we are not inside a string

                            array_push($stk, array('what' => SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs{$c}));

                            array_push($stk, array('what' => SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs[$c]));

                            //print("Found start of string at {$c}\n");


                            //print("Found start of string at {$c}\n");


                        } elseif (($chrs{$c} == $top['delim']) &&

                        } elseif (($chrs[$c] == $top['delim']) &&

                                 ($top['what'] == SERVICES_JSON_IN_STR) &&
((strlen(substr($chrs, 0, $c)) - strlen(rtrim(substr($chrs, 0, $c), '\\'))) % 2 != 1)) {
// found a quote, we're in a string, and it's not escaped

                                 ($top['what'] == SERVICES_JSON_IN_STR) &&
((strlen(substr($chrs, 0, $c)) - strlen(rtrim(substr($chrs, 0, $c), '\\'))) % 2 != 1)) {
// found a quote, we're in a string, and it's not escaped

Zeile 705Zeile 711
                            array_pop($stk);
//print("Found end of string at {$c}: ".substr($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n");


                            array_pop($stk);
//print("Found end of string at {$c}: ".substr($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n");


                        } elseif (($chrs{$c} == '[') &&

                        } elseif (($chrs[$c] == '[') &&

                                 in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
// found a left-bracket, and we are in an array, object, or slice
array_push($stk, array('what' => SERVICES_JSON_IN_ARR, 'where' => $c, 'delim' => false));
//print("Found start of array at {$c}\n");


                                 in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
// found a left-bracket, and we are in an array, object, or slice
array_push($stk, array('what' => SERVICES_JSON_IN_ARR, 'where' => $c, 'delim' => false));
//print("Found start of array at {$c}\n");


                        } elseif (($chrs{$c} == ']') && ($top['what'] == SERVICES_JSON_IN_ARR)) {

                        } elseif (($chrs[$c] == ']') && ($top['what'] == SERVICES_JSON_IN_ARR)) {

                            // found a right-bracket, and we're in an array
array_pop($stk);
//print("Found end of array at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");


                            // found a right-bracket, and we're in an array
array_pop($stk);
//print("Found end of array at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");


                        } elseif (($chrs{$c} == '{') &&

                        } elseif (($chrs[$c] == '{') &&

                                 in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
// found a left-brace, and we are in an array, object, or slice
array_push($stk, array('what' => SERVICES_JSON_IN_OBJ, 'where' => $c, 'delim' => false));
//print("Found start of object at {$c}\n");


                                 in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
// found a left-brace, and we are in an array, object, or slice
array_push($stk, array('what' => SERVICES_JSON_IN_OBJ, 'where' => $c, 'delim' => false));
//print("Found start of object at {$c}\n");


                        } elseif (($chrs{$c} == '}') && ($top['what'] == SERVICES_JSON_IN_OBJ)) {

                        } elseif (($chrs[$c] == '}') && ($top['what'] == SERVICES_JSON_IN_OBJ)) {

                            // found a right-brace, and we're in an object
array_pop($stk);
//print("Found end of object at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");

                            // found a right-brace, and we're in an object
array_pop($stk);
//print("Found end of object at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");

Zeile 803Zeile 809

}



}


function json_encode($var)

if(!function_exists('json_encode'))

{

{

    $JSON = new Services_JSON;
return $JSON->encode($var);




	function json_encode($var)
{
$JSON = new Services_JSON;
return $JSON->encode($var);
}

}


}


function json_decode($var)

if(!function_exists('json_decode'))

{

{

    $JSON = new Services_JSON;
return $JSON->decode($var);




	function json_decode($var)
{
$JSON = new Services_JSON;
return $JSON->decode($var);
}

}

}