我在使用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"}
有人可以帮助我吗?
答案 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查看流浪“?”。