PHP json_decode返回错误代码4


PHP json_decode return error code 4

我之前也问过同样的问题。我想从以下位置解码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
?>

从上一个答案中,我知道json返回中有UTF8DOM。我尝试了一个类似问题的答案:json_decode在Web服务调用后返回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());
?>

这成功地将json解码为数组。然而,所有的中文和日文字符串也被删除了。有什么想法吗?

编辑:

我曾经http://jsonlint.com/从中解码jsonhttp://pad.skyozora.com/data/pets.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",
        [
            "ウルカヌ火山",
            "メジェド

并给我错误:

Parse error on line 5001:
...山",                "メジェド
----------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['

但是我看不出json的这部分有任何问题。

返回错误代码4是由于JSON_ERROR_SYNTAX导致的,您必须尝试修复json。

如果你在浏览器中访问url,你可以看到以下消息:

bad character in string literal at line 1 column 294388