0

基本的に、私は当面 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;
    }
}

次のエラーが表示されます。

解析エラー: 構文エラー、4 行目の /var/www/html/siteadmin/includes/functions_custom.inc.php の予期しない T_STRING

明確でない場合、「4 行目」は「function json_encode($a=false)」を含む行を参照しています。以前に関数を追加しようとしましたが (パラメーターとデフォルト値の有無にかかわらず)、それらはすべて正常に動作します。ただし、このコードには何か問題があります。

4

0 に答える 0