PHP 5.1 中的 Json_encode() 函数无法正常工作?

5

可能重复:
如何在PHP 5.1中解码json?

我正在使用json_encode函数,在我的本地主机上可以正常工作...当我移动到服务器上时,它就无法工作了...我搜索了一下,发现它不支持5.1版本...我想要使用这个函数。还有其他可能性吗?是否需要升级到5.2或其他版本?


请查看此线程 https://dev59.com/BkzSa4cB1Zd3GeqPllSe - Dr. Dan
json_encode 在 5.1 版本下也可以使用(请参见 http://de2.php.net/manual/en/function.json-encode.php PHP 5 >= 5.2.0,PECL json >= 1.2.0)。我的建议是:您的服务器上可能没有安装 pecl/json。 - donald123
你知道PHP 5.1有多老吗?除了速度慢和缺乏许多非常重要的功能外,它还存在已知的安全漏洞。升级到PHP 5.3或PHP 5.4。 - NikiC
1
谢谢大家,我找到了答案....http://www.boutell.com/scripts/jsonwrapper.html - shanmugavel
3个回答

17

以下是我在PHP 5.1中成功使用的方法(取自http://www.php.net/json_encode下的评论):

/**
 * Supplementary json_encode in case php version is < 5.2 (taken from http://gr.php.net/json_encode)
 */
if (!function_exists('json_encode'))
{
    function json_encode($a=false)
    {
        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); $i < count($a); $i++, next($a))
        {
            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) . '}';
        }
    }
}

这段程序代码能完美运行吗,Perikiles? - shanmugavel
4
我使用它已经很久了,而且一直没有出现问题,但我不能100%确定。升级到PHP 5.2+是首选的解决方案。 - periklis

2

是的,json_encode在PHP 5 >= 5.2.0版本中可用,您必须升级(推荐)或找到一个实现该功能的库。


2

看一下http://de.php.net/json_encode中的评论。有些人提供了一个用PHP编写的函数,可以实现相同的功能。只是性能(很可能)不如本地的好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接