I've some problem retrieving json information with a PHP.
I've created a s开发者_如何学编程imple php page that returns a json:
$data = array(
'title' => 'Simple title'
);
print json_encode($data);
And in another page I try to get that array as an object:
$content = file_get_contents($url);
$json_output = json_decode($content, true);
switch(json_last_error())
{
case JSON_ERROR_DEPTH:
echo ' - Maximum stack depth exceeded';
break;
case JSON_ERROR_CTRL_CHAR:
echo ' - Unexpected control character found';
break;
case JSON_ERROR_SYNTAX:
echo ' - Syntax error, malformed JSON';
break;
case JSON_ERROR_NONE:
echo ' - No errors';
break;
}
The problem is that there is an error with this approach: I receive a "JSON_ERROR_SYNTAX" because after "file_get_contents" function I have an unknown character at the beginning of the string.
If I copy/paste it on Notepad++ I didn't see:
{"title":"Simple title"}
but I see:
?{"title":"Simple title"}
Could someone help me?
Make sure both your scripts have same encoding - and if it's UTF make sure they are without Byte Order Mark (BOM) at very begin of file.
What about
$content = trim(file_get_contents($url));
?
Also, it sounds as if there was a problem with the encoding within the PHP that echo
s your JSON. Try setting proper (as in: content-type
) headers and make sure that both files are UTF-8 encoded.
Also: What happens if you open $url
in your browser? Do you see an "?"
I am pretty sure your page that does the json_encode
has a stray ?
. Look in there for a missing >
in terms of ?>
and such.
Look through your PHP for a stray "?".
精彩评论