| 原始字元 | 轉義後 | 說明 |
| \ (反斜線) | \\ | 跳脫字元 |
| / (斜線) | \/ | JSON 允許轉義正斜線 |
| " (雙引號) | \" | 字串界定符 |
| 換行 (LF, \n) | \n | 控制字元 |
| 歸位 (CR, \r) | \r | 控制字元 |
| 定位符 (Tab, \t) | \t | 控制字元 |
| 退位 (Backspace, \b) | \b | 控制字元 |
| 換頁 (Form feed, \f) | \f | 控制字元 |
實作函數
<?php
function escapeJsonString($value) {
$escapers = [
"\\", "/", "\"", "\n", "\r", "\t", "\x08", "\x0c"
];
$replacements = [
"\\\\", "\\/", "\\\"", "\\n", "\\r", "\\t", "\\b", "\\f"
];
return str_replace($escapers, $replacements, $value);
}
// 測試
$raw = 'Lorem ipsum "dolor" sit amet, consectetur \ adipiscing elit.';
$escaped = escapeJsonString($raw);
echo $escaped;
// 輸出:Lorem ipsum \"dolor\" sit amet, consectetur \\ adipiscing elit.
?>
使用情境
- 維護舊專案(PHP 5.1 或更早)無法升級。
- 手動拼接 JSON 字串(不建議,應改用陣列 + json_encode)。
- 特殊需求:需在 JSON 字串中內嵌已轉義的 JSON 片段。
現代做法(PHP 5.2+)
$data = ['content' => $raw];
echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
// 直接產生合法 JSON,支援 Unicode 不轉義、斜線不轉義
- 上一篇文章: PHP 透過 Whois 伺服器查詢域名註冊資訊函數實作
- 下一篇文章: PHP 趣味人品測試程式:根據姓名 ASCII 碼計算分數
Copyright ©
程式碼之家 All Rights Reserved