JSON_ERROR_SYNTAX:揭示隱藏字元問題
儘管有線上格式化程式的保證,但在使用json_decode() 時遇到解碼令人困惑的JSON_ERROR_SYNTAX 錯誤要確保JSON 有效,尋找隱藏字元至關重要。
PHP 的 json_decode() 函數非常嚴格,會拒絕任何語法錯誤的 JSON,包括看不見的控製字元或無效的 UTF-8 編碼。若要解決此問題,請實現以下程式碼:
<code class="php">for ($i = 0; $i <= 31; ++$i) { $data = str_replace(chr($i), "", $data); } $data = str_replace(chr(127), "", $data);</code>
此循環消除了控製字元(ASCII 代碼 0-31 和 127)。此外,檢查可能作為 JSON 前綴的「字節順序標記」(0xEF 0xBB 0xBF) 並將其丟棄:
<code class="php">if (0 === strpos(bin2hex($data), 'efbbbf')) { $data = substr($data, 3); }</code>
清理 JSON 資料後,使用 json_decode() 對其進行解碼。這種綜合方法將解決 JSON_ERROR_SYNTAX 錯誤的許多實例,提供更有意義的解碼體驗。
以上是解碼隱藏字元時如何修復 JSON_ERROR_SYNTAX 問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!