一、什麼是魔術引號
提醒: 本特性已自 PHP 5.3.0 起廢棄並將自 PHP 5.4.0 起移除。
所以在5.4版本以後php設定檔是找不到魔術引號的配置資訊的
當開啟時,所有的 ‘(單引號),”(雙引號),\(反斜線)和 NULL 字元都會被自動加上一個反斜線進行轉義。這和 addslashes() 作用完全相同。
一共有三個魔術引號指令:
1、magic_quotes_gpc 影響到 HTTP 要求資料(GET,POST 和 COOKIE)。不能在運行時改變。在 PHP 中預設值為 on。 參見 get_magic_quotes_gpc()。
2、magic_quotes_runtime 如果開啟的話,大部份從外部來源取得資料並返回的函數,包括從資料庫和文字檔,所返回的資料都會被反斜線轉義。該選項可在啟動並執行時改變,在 PHP 中的預設值為 off。 參見 set_magic_quotes_runtime() 和 get_magic_quotes_runtime()。
3、magic_quotes_sybase 如果開啟的話,將會使用單引號對單引號進行轉義而非反斜線。此選項會完全覆蓋 magic_quotes_gpc。如果同時開啟兩個選項的話,單引號將會被轉義成 ”。而雙引號、反斜線 和 NULL 字元將不會進行轉義。 如何取得其值參見 ini_get()。 二、說明
因為魔術引號特性已自 PHP 5.3.0 起廢棄並將自 PHP 5.4.0 起移除,所以大家基本不用這個特性了,只需要瞭解一下就行了。
對於魔術引號的處理主要有四個函數處理
| 函數 |
說明 |
| addcslashes() |
返回在指定的字元前添加反斜線的字串。 |
| addslashes() |
返回在預定義的字元前添加反斜線的字串。 |
| stripcslashes() |
刪除由 addcslashes() 函數添加的反斜線。 |
| stripslashes() |
刪除由 addslashes() 函數添加的反斜線。 |
提示:預定義的字元是 單引號(’) 雙引號(”) 反斜線(\) NULL
樣本
$var1 = "abc'123";$var2 = 'abc"123';$var3 = 'abc\123';$var4 = "A001 A002 A003";
addslashes()在預定義的字元前添加反斜線的字串
var_dump(addslashes($var1));echo '<br>';var_dump(addslashes($var2));echo '<br>';var_dump(addslashes($var3));echo '<br>';
列印
string(8) "abc\'123"string(8) "abc\"123"string(8) "abc\\123"
stripslashes()刪除由 addslashes() 函數添加的反斜線
var_dump(stripslashes(addslashes($var1)));echo '<br>';var_dump(stripslashes(addslashes($var2)));echo '<br>';var_dump(stripslashes(addslashes($var3)));echo '<br>';
列印
string(7) "abc'123"string(7) "abc"123"string(7) "abc\123"
addcslashes()在指定的字元前添加反斜線的字串
var_dump(addcslashes($var4,"A"));
列印
string(17) "\A001 \A002 \A003"
stripslashes()刪除由 addslashes() 函數添加的反斜線。
var_dump(stripslashes(addcslashes($var4,"A")));
列印
string(14) "A001 A002 A003"