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

舊版 PHP 手動轉義 JSON 特殊字元函式

     編輯:PHP 綜合知識

問題背景

在開發 API 時,從 MySQL 讀取含有 HTML 標籤與特殊字元的文章內容(content 欄位),若直接 json_encode 會導致 JSON 結構破壞。PHP 5.2 以上內建支援轉義,但若維護舊專案(PHP < 5.2),需自行實作轉義函式。

轉義範例

原始字串:

'Lorem ipsum "dolor" sit amet, consectetur \ adipiscing elit.'

轉義後應為:

Lorem ipsum \"dolor\" sit amet,\nconsectetur \\ adipiscing elit.

自訂轉義函式

# 參考 www.json.org 規範 (\b backspace, \f formfeed)
public function escapeJsonString($value) {
    $escapers = array("\\", "/", "\"", "\n", "\r", "\t", "\x08", "\x0c");
    $replacements = array("\\\\", "\\/", "\\\"", "\\n", "\\r", "\\t", "\\f", "\\b");
    $result = str_replace($escapers, $replacements, $value);
    return $result;
}

使用說明

  • $escapers 定義需轉義的字元:反斜線、正斜線、雙引號、換行、回車、定位鍵、退位鍵、換頁鍵。
  • $replacements 為對應的跳脫序列。
  • 函式回傳處理後的字串,可安全放入 JSON 字串中。

適用情境

  • 維護 PHP 5.1 或更早版本的專案。
  • 需手動組裝 JSON 字串而非使用 json_encode 時。
  • 資料含有大量 HTML/JS 程式碼片段,需確保輸出合法。
提示:若專案已升級至 PHP 5.2+,請直接使用內建 json_encode($data, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE) 更完善。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved