在處理使用者輸入、資料庫存取或表單提交時,反斜線的增減是常見議題。PHP 提供了 addcslashes/stripcslashes 與 addslashes/stripslashes 兩組配對函數,本文詳細說明其定義、語法、參數與實際應用場景,並附上可直接執行的代碼範例。
stripcslashes() 會移除由 addcslashes() 加入的反斜線,常用於還原經過 C 風格跳脫處理的字串。
stripcslashes(string $string): string
| 參數 | 說明 |
|---|---|
string | 必選。需處理的字串。 |
<?php
$str = 'Hello, my name is Kai Jim.';
// 假設此字串曾經過 addcslashes 處理
echo stripcslashes($str);
// 輸出:Hello, my name is Kai Jim.
?>
提示:此函數適合從資料庫讀回含 C 風格跳脫字元的資料時使用。
stripslashes() 移除由 addslashes() 加入的反斜線,常用於清理從資料庫或 HTML 表單取回的資料。
stripslashes(string $string): string
| 參數 | 說明 |
|---|---|
string | 必選。需處理的字串。 |
<?php
$str = \"Who's Kai Jim?\";
// 假設此字串曾經過 addslashes 處理
echo stripslashes($str);
// 輸出:Who's Kai Jim?
?>
提示:關閉 magic_quotes_gpc 後,手動對 $_GET/$_POST/$_COOKIE 使用 stripslashes 可避免重複跳脫。
| 函數 | 對應反向函數 | 處理字元範圍 | 典型用途 |
|---|---|---|---|
| stripcslashes | addcslashes | C 風格跳脫序列(\n, \t, \0, 八進位、十六進位) | 二進位資料、特殊控制字元還原 |
| stripslashes | addslashes | 單引號、雙引號、反斜線、NULL | SQL 查詢字串、表單資料清理 |
mysqli_real_escape_string 或 PDO 預處理,而非 addslashes。stripslashes 或 stripcslashes。json_encode,無需手動跳脫。php.ini 設定 magic_quotes_gpc = Off。理解 stripcslashes 與 stripslashes 的適用場景,能有效避免資料重複跳脫或遺漏跳脫導致的安全漏洞。現代開發建議優先採用參數化查詢與 json_encode,減少手動字串跳脫操作。