tags:

views:

490

answers:

4

json_decode function is not part of PHP 5.1, so I cannot use it. Is there any other function for this version?

+1  A: 

Before PHP 5.2, you can use the JSON PECL extension.

In fact, it is the extension that has been integrated into PHP 5.2 (quoting) :

As of PHP 5.2.0, the JSON extension is bundled and compiled into PHP by default.


Some other solutions would be to use some component developped in PHP.

Some time ago (about one year ago), I used the Zend_Json component of Zend Framework, with PHP 5.1.

Even if Zend Framework requires PHP 5.2, that component can be extracted (I think it depends only on one other component -- maybe Zend_Exception, or something like that) -- and one year ago, it was possible to use it with PHP 5.1.


The official JSON website also links to several PHP-based or PHP-oriented components -- you might want to take a look at that list.

Pascal MARTIN
Thanx, how can I install that, it has no documentation of that, it only links to php site that says there is no need to install it because it is part of php lol
newbie
Installing a PECL extension, at least on a Linux system, is generally quite simple : `pecl install json` ; note that you might need some "dev" packages from your distribution ;;; Might also be interesting to take a look at http://php.net/manual/en/install.pecl.php
Pascal MARTIN
A: 

The Zend framework has Zend_Json. At least it used to a couple of years ago.

http://framework.zend.com/download

You can just pull out the JSON library and use it in a standalone manner.

Oli
Not sure why whoever -1'd me did so. While this isn't perhaps as good as the PECL solution, it's still a valid option.
Oli
A: 

code

<?php 
if ( !function_exists('json_decode') ){ 
function json_decode($json) 
{  
    // Author: walidator.info 2009 
    $comment = false; 
    $out = '$x='; 

    for ($i=0; $i<strlen($json); $i++) 
    { 
        if (!$comment) 
        { 
            if ($json[$i] == '{')        $out .= ' array('; 
            else if ($json[$i] == '}')    $out .= ')'; 
            else if ($json[$i] == ':')    $out .= '=>'; 
            else                         $out .= $json[$i];            
        } 
        else $out .= $json[$i]; 
        if ($json[$i] == '"')    $comment = !$comment; 
    } 
    eval($out . ';'); 
    return $x; 
}  
} 
?>

warning

it is untested, found on the internetz

link

http://www.php.net/manual/en/function.json-decode.php#91216

Adam Kiss
A: 

You're seeing this error because you have a php version earlier than 5.2.0. These functions are included by default in php 5.2.0 and later.

PHP Fatal error:  Call to undefined function json_encode()

You can install the PECL extension by running:

pecl install json

It will compile, then add this to your php.ini file: (mine is in /etc/php5/apache2)

extension=json.so

Then restart apache.

jjclarkson