Нужна помощь в согласовании PHP "T_STRING" ошибка - PullRequest
0 голосов
/ 24 ноября 2011

Обычно я застрял в системе PHP 5.1.6 и мне нужен json_encode (), поэтому я нашел этот код. Тем не менее, я не могу понять на всю жизнь, почему он жалуется на недействительный T_STRING. Надеюсь, это что-то совершенно очевидное / простое.

Когда я пытаюсь использовать следующий код:

if(!function_exists('json_encode')){
    function json_encode($a=false){
        // Some basic debugging to ensure we have something returned
        if (is_null($a)) return 'null';
        if ($a === false) return 'false';
        if ($a === true) return 'true';
        if (is_scalar($a))
        {
            if (is_float($a))
            {
                // Always use '.' for floats.
                return floatval(str_replace(',', '.', strval($a)));
            }
            if (is_string($a))
            {
                static $jsonReplaces = array(array('\\', '/', "\n", "\t", "\r", "\b", "\f", '"'), array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"'));
                return '"' . str_replace($jsonReplaces[0], $jsonReplaces[1], $a) . '"';
            }
            else
                return $a;
        }
        $isList = true;
        for ($i = 0, reset($a); true; $i++) {
            if (key($a) !== $i)
            {
                $isList = false;
                break;
            }
        }
        $result = array();
        if ($isList)
        {
            foreach ($a as $v) $result[] = json_encode($v);
            return '[' . join(',', $result) . ']';
        }
        else
        {
            foreach ($a as $k => $v) $result[] = json_encode($k).':'.json_encode($v);
            return '{' . join(',', $result) . '}';
        }
    }
}


if(!function_exists('json_decode')){
    function json_decode($json){
        $comment = false;
        $out = '$x=';
        for ($i=0; $i<strlen($json); $i++)
        {
            if (!$comment)
            {
                if (($json[$i] == '{') || ($json[$i] == '['))
                    $out .= ' array(';
                else if (($json[$i] == '}') || ($json[$i] == ']'))
                    $out .= ')';
                else if ($json[$i] == ':')
                    $out .= '=>';
                else
                    $out .= $json[$i];
            }
            else
                $out .= $json[$i];
            if ($json[$i] == '"' && $json[($i-1)]!="\\")
                $comment = !$comment;
        }
        eval($out . ';');
        return $x;
    }
}

Я получаю следующую ошибку:

Ошибка синтаксического анализа: синтаксическая ошибка, неожиданная ошибка T_STRING в /var/www/html/siteadmin/includes/functions_custom.inc.php в строке 4

В случае, если неясно, «строка 4» относится к строке, содержащей «функцию json_encode ($ a = false)». Я пробовал добавлять функции раньше (с параметрами и без параметров и значений по умолчанию), и все они работают нормально. Однако с этим кодом что-то не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...