用php检索json时出错

时间:2011-10-03 13:30:08

标签: php json

我在使用PHP检索json信息时遇到了一些问题。

我创建了一个返回json的简单php页面:

$data = array(
    'title' => 'Simple title'
);
print json_encode($data);

在另一个页面中,我尝试将该数组作为对象:

$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;
}

问题是这种方法有错误:我收到“JSON_ERROR_SYNTAX”,因为在“file_get_contents”函数之后我在字符串的开头有一个未知字符。

如果我在Notepad ++上复制/粘贴它,我没有看到:

{"title":"Simple title"}

但我明白了:

?{"title":"Simple title"}

有人可以帮助我吗?

4 个答案:

答案 0 :(得分:3)

确保您的脚本具有相同的编码 - 如果它是UTF,请确保它们在文件的开头没有字节顺序标记(BOM)。

答案 1 :(得分:1)

怎么样?
$content = trim(file_get_contents($url));

此外,听起来好像PHP中的编码存在问题echo是您的JSON。尝试设置正确的(如:content-type)标头,并确保两个文件都是UTF-8编码。


另外:如果您在浏览器中打开$url会怎样?你看到了“?”

答案 2 :(得分:1)

我非常确定您json_encode的网页有一个迷路?。在>等方面查找缺少?>的内容。

答案 3 :(得分:0)

通过PHP查看流浪“?”。