2012-07-27 60 views
4

可能重复:
How can I decode json in PHP 5.1?Json_encode()不能在PHP 5.1中工作?

我使用json_encode功能,它在我的本地罚款......当我移动到它不能正常工作的服务器...我用Google搜索,找出它不支持5.1版本...我想使用这个功能。其他可能性?我需要升级到5.2还是笏?

+0

请参阅此主题http://stackoverflow.com/questions/2370968/how-can-i-decode-json-in-php-5-1 – 2012-07-27 08:49:55

+0

json_encode也适用于5.1(请参阅http:// de2。 php.net/manual/en/function.json-encode.php PHP 5> = 5.2.0,PECL json> = 1.2.0)。我会tipp:你的服务器上没有安装pecl/json – donald123 2012-07-27 08:53:15

+0

你知道吗*老的PHP 5.1是怎么样的?除了速度缓慢并且缺少许多非常重要的功能外,它还具有已知的安全漏洞。升级到PHP 5.3或PHP 5.4。 – NikiC 2012-07-27 09:00:13

回答

2

json_encode可在PHP 5> = 5.2.0,你必须升级(recomended)或找到实现该功能的库。

13

这里是我已经成功地使用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) . '}'; 
     } 
    } 
} 
+0

它会工作完美perikiles ...? – shanmugavel 2012-07-27 08:54:28

+3

好吧,我用了很多年,没有问题,但我无法确定100%。升级到php 5.2+是首选解决方案 – periklis 2012-07-27 09:07:23

2

请在评论中看看http://de.php.net/json_encode。有些人提供了一个PHP编写的功能,其功能相同。只有表现(很有可能)不会像原生表演那样出色;-)。