Вход Регистрация
Файл: upload-2031-rs1/system/helper/json.php
Строк: 104
<?php
if (!function_exists('json_encode')) {
    function 
json_encode($data) {
        switch (
gettype($data)) {
            case 
'boolean':
                return 
$data 'true' 'false';
            case 
'integer':
            case 
'double':
                return 
$data;
            case 
'resource':
            case 
'string':
                
# Escape non-printable or Non-ASCII characters.
                # I also put the \ character first, as suggested in comments on the 'addclashes' page.
                
$json '';

                
$string '"' addcslashes($data"\"nrt/" chr(8) . chr(12)) . '"';

                
# Convert UTF-8 to Hexadecimal Codepoints.
                
for ($i 0$i strlen($string); $i++) {
                    
$char $string[$i];
                    
$c1 ord($char);

                    
# Single byte;
                    
if ($c1 128) {
                        
$json .= ($c1 31) ? $char sprintf("\u%04x"$c1);

                        continue;
                    }

                    
# Double byte
                    
$c2 ord($string[++$i]);

                    if ((
$c1 32) === 0) {
                        
$json .= sprintf("\u%04x", ($c1 192) * 64 $c2 128);

                        continue;
                    }

                    
# Triple
                    
$c3 ord($string[++$i]);

                    if ((
$c1 16) === 0) {
                        
$json .= sprintf("\u%04x", (($c1 224) <<12) + (($c2 128) << 6) + ($c3 128));

                        continue;
                    }

                    
# Quadruple
                    
$c4 ord($string[++$i]);

                    if ((
$c1 ) === 0) {
                        
$u = (($c1 15) << 2) + (($c2 >> 4) & 3) - 1;

                        
$w1 = (54 << 10) + ($u << 6) + (($c2 15) << 2) + (($c3 >> 4) & 3);
                        
$w2 = (55 << 10) + (($c3 15) << 6) + ($c4 128);

                        
$json .= sprintf("\u%04x\u%04x"$w1$w2);
                    }
                }

                return 
$json;
            case 
'array':
                if (empty(
$data) || array_keys($data) === range(0sizeof($data) - 1)) {
                    
$output = array();

                    foreach (
$data as $value) {
                        
$output[] = json_encode($value);
                    }

                    return 
'[' implode(','$output) . ']';
                }
            case 
'object':
                
$output = array();

                foreach (
$data as $key => $value) {
                    
$output[] = json_encode(strval($key)) . ':' json_encode($value);
                }

                return 
'{' implode(','$output) . '}';
            default:
                return 
'null';
        }
    }
}

if (!
function_exists('json_decode')) {
    function 
json_decode($json$assoc false) {
        
$match '/".*?(?<!\\)"/';

        
$string preg_replace($match''$json);
        
$string preg_replace('/[,:{}[]0-9.-+Eaeflnr-u nrt]/'''$string);

        if (
$string != '') {
            return 
null;
        }

        
$s2m = array();
        
$m2s = array();

        
preg_match_all($match$json$m);

        foreach (
$m[0] as $s) {
            
$hash '"' md5($s) . '"';
            
$s2m[$s] = $hash;
            
$m2s[$hash] = str_replace('$''$'$s);
        }

        
$json strtr($json$s2m);

        
$a = ($assoc) ? '' '(object) ';

        
$data = array(
            
':' => '=>',
            
'[' => 'array(',
            
'{' => "{$a}array(",
            
']' => ')',
            
'}' => ')'
        
);

        
$json strtr($json$data);

        
$json preg_replace('~([s(,>])(-?)0~''$1$2'$json);

        
$json strtr($json$m2s);

        
$function = @create_function(''"return {$json};");
        
$return = ($function) ? $function() : null;

        unset(
$s2m);
        unset(
$m2s);
        unset(
$function);

        return 
$return;
    }
}
Онлайн: 1
Реклама