Not a direct response to this question, but an issue I spent a few hours trying to resolve.
If you are attempting to decode JSON that came from a remote file via CURL, and if that file is in UTF-8 format, the beginning of the file may have the following characters (which breaks json_decode():

Which you will not see with the naked eye, only via htmlentities();
I have no idea why they are there, I traced this all the way to curl_exec()
, thinking that maybe they were being added there. In any case, those little bastards were being added only when file is in UTF-8 format.
So, assuming you have no control over the encoding of the source file, you can do something like this before passing the string into json_decode():
$encoding = mb_detect_encoding($json);
if($encoding == 'UTF-8') {
$json = preg_replace('/[^(x20-x7F)]*/','', $json);
}
print_r(json_decode($json));
I hope I save somebody some time, it took me a few hours of tracing to figure out that's what was happening.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…