Pat*_* Ng 7 php string json character-encoding json-deserialization
我之前曾问过同样的问题.我想解读json:http://pad.skyozora.com/data/pets.json.以下是我之前使用的代码:
<?php
$html=file_get_contents("http://pad.skyozora.com/data/pets.json");
var_dump(json_decode($html,true)); //return null
var_dump(json_last_error()); // return 4
?>
Run Code Online (Sandbox Code Playgroud)
从最后一个答案我知道json返回中有UTF8 DOM.我尝试了类似问题的答案:json_decode在webservice调用后返回NULL,但所有答案对我都不起作用.
经过更多的研究后,我发现了一种有效的方法:
<?php
$html=file_get_contents("http://pad.skyozora.com/data/pets.json");
$html=preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $html);
var_dump(json_decode($html, true));
var_dump(json_last_error());
?>
Run Code Online (Sandbox Code Playgroud)
这成功地将json解码为数组.但是所有中文和日文字符串也被删除了.有任何想法吗?
编辑:
我使用http://jsonlint.com/从http://pad.skyozora.com/data/pets.json解码json .它停在这里:
[
161,
"??????",
0,
-1,
0,
-1,
1,
1,
10,
50,
1,
0,
0,
0,
0,
[
],
[
0,
0,
0,
0,
0,
0,
0
],
"http:\/\/i.imgur.com\/Y1jZlGW.png",
[
"??????",
"????
Run Code Online (Sandbox Code Playgroud)
并给我错误:
Parse error on line 5001:
...?", "????
----------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['
Run Code Online (Sandbox Code Playgroud)
但我看不出这部分json有什么问题.
返回错误代码4是由于JSON_ERROR_SYNTAX
您必须尝试修复您的json.
如果您在浏览器中转到该网址,则可以看到以下消息:
bad character in string literal at line 1 column 294388
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
22987 次 |
最近记录: |