示例#1
0
function __json_encode($data)
{
    if (is_array($data) || is_object($data)) {
        $islist = is_array($data) && (empty($data) || array_keys($data) === range(0, count($data) - 1));
        if ($islist) {
            $json = '[' . implode(',', array_map('__json_encode', $data)) . ']';
        } else {
            $items = array();
            foreach ($data as $key => $value) {
                $items[] = __json_encode("{$key}") . ':' . __json_encode($value);
            }
            $json = '{' . implode(',', $items) . '}';
        }
    } elseif (is_string($data)) {
        # Escape non-printable or Non-ASCII characters.
        # I also put the \\ character first, as suggested in comments on the 'addclashes' page.
        $string = '"' . addcslashes($data, "\\\"\n\r\t/" . chr(8) . chr(12)) . '"';
        $json = '';
        $len = strlen($string);
        # Convert UTF-8 to Hexadecimal Codepoints.
        for ($i = 0; $i < $len; $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 & 8) === 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);
            }
        }
    } else {
        # int, floats, bools, null
        $json = strtolower(var_export($data, true));
    }
    return $json;
}
示例#2
0
function setResponse($statusCode, $statusString, $data = "")
{
    $response = array('statusCode' => $statusCode, 'statusString' => $statusString, 'data' => $data);
    //if php version < 5.3.0 we need to emulate the object string
    if (PHP_MAJOR_VERSION <= 5 & PHP_MINOR_VERSION < 3) {
        print __json_encode($response);
    } else {
        print json_encode($response);
    }
    //if ($statusCode != 1) {
    if (!isIncluded()) {
        exit;
    }
    //}
}
示例#3
0
switch ($status) {
    case -1:
        $output['iTotalRecords'] = $output['iTotalDisplayRecords'] = $_GET["ndirectories"];
        break;
    case 0:
        $output['iTotalRecords'] = $output['iTotalDisplayRecords'] = $_GET["nno"];
        break;
    case 1:
        $output['iTotalRecords'] = $output['iTotalDisplayRecords'] = $_GET["nzero"];
        break;
    case 2:
        $output['iTotalRecords'] = $output['iTotalDisplayRecords'] = $_GET["nlow"];
        break;
    case 3:
        $output['iTotalRecords'] = $output['iTotalDisplayRecords'] = $_GET["nmedium"];
        break;
    case 4:
        $output['iTotalRecords'] = $output['iTotalDisplayRecords'] = $_GET["nsatisfactory"];
        break;
    case 5:
        $output['iTotalRecords'] = $output['iTotalDisplayRecords'] = $_GET["ncomplete"];
        break;
    case 6:
        $output['iTotalRecords'] = $output['iTotalDisplayRecords'] = $_GET["nall"];
        break;
}
if (function_exists('json_encode')) {
    echo json_encode($output);
} else {
    echo __json_encode($output);
}
示例#4
0
<?php

require_once "utils.php";
require_once "database.php";
require_once "image.php";
$docName = $_REQUEST["docname"];
$database = new Database(Utils::rootDirectory());
$docData = $database->findDocument($docName);
Image::buildThumbnailHtml($docData["imageLocation"], $docData["thumbnailLocation"]);
$documentJSON = __json_encode($docData);
echo $documentJSON;