首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 處理 JSON 字串:移除反斜線與雙引號前轉義字符的完整指南

     編輯:PHP 綜合知識

前言

在 PHP 開發中,透過 AJAX 傳遞 JSON 資料時,經常會遇到字串被自動加上反斜線(\)進行轉義的情況。這會導致 json_decode() 解析失敗,回傳 NULL。本文將詳細介紹如何正確處理這類問題,包含移除反斜線、處理 BOM 標頭、以及常見錯誤的排查方案。

核心解決方案:使用 stripslashes()

最直接的方法是使用 PHP 內建的 stripslashes() 函數移除反斜線,再進行 JSON 解碼:

$str = stripslashes($_POST['json']);
$arr = json_decode($str, true);

進階情況:非標準 JSON 格式處理

若資料格式不標準(例如雙引號前有反斜線 \"),可先將 \" 替換為 ",再解碼:

$json = str_replace('\\"', '"', $json);
$arr = json_decode($json, true);

BOM 標頭導致解析失敗

若上述方法仍回傳 NULL,可能是因為字串包含 UTF-8 BOM 標頭(EF BB BF)。需先移除 BOM 再解碼:

$arr = json_decode(trim($json, chr(239).chr(187).chr(191)), true);

完整處理流程建議

  1. 接收原始 JSON 字串
  2. 檢查並移除 BOM 標頭
  3. 使用 stripslashes() 移除轉義反斜線
  4. 若必要,替換 \" 為 "
  5. 呼叫 json_decode($str, true) 轉為關聯陣列
  6. 檢查 json_last_error() 確認解碼狀態

常見錯誤與除錯技巧

  • 語法錯誤:使用 json_last_error_msg() 獲取具體錯誤訊息
  • 編碼問題:確保資料為 UTF-8 編碼,必要時用 mb_convert_encoding() 轉換
  • 深度限制:大型 JSON 可能超過預設遞迴深度,可調整 json_decode() 的 $depth 參數

掌握這些技巧,能讓你在處理 AJAX 傳遞的 JSON 資料時更加得心應手,避免因轉義字符導致的解析失敗。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved