我想這個代碼如何解決php json_decode中的JSON_ERROR_UTF8錯誤?
$json = file_get_contents("http://www.google.com/alerts/preview?q=test&t=7&f=1&l=0&e");
print_r(json_decode(utf8_encode($json), true));
//////////////
// Define the errors.
$constants = get_defined_constants(true);
$json_errors = array();
foreach ($constants["json"] as $name => $value) {
if (!strncmp($name, "JSON_ERROR_", 11)) {
$json_errors[$value] = $name;
}
}
// Show the errors for different depths.
foreach (range(4, 3, -1) as $depth) {
var_dump(json_decode($json, true, $depth));
echo 'Last error: ', $json_errors[json_last_error()], PHP_EOL, PHP_EOL;
}
我已經嘗試了很多功能,html_entities_decode,函數utf8_encode和解碼,解碼的十六進制代碼,但我總是得到錯誤「JSON_ERROR_UTF8」。
我怎麼能解決這個問題?
我不知道爲什麼錯誤是走出來的UTF8錯誤更好。由該URL返回的JSON無效,因爲它使用雙引號的地方應該使用雙引號。它不通過JSON LINT(http://jsonlint.com/)。也就是說,我假設你的代碼的第2行中的$ x應該是'$ json'? – JAAulde 2012-04-17 21:01:35
是的,我正在清理代碼,並忘記更改$ x,你有沒有嘗試使它有效,然後試圖解碼它?我不知道如何使其有效。 – 2012-04-17 21:09:13
我試過用雙打替換所有的單引號,但後來碰到其他驗證問題。仍然看一看。 – JAAulde 2012-04-17 21:09:52