PHP自動轉義和還原字串

2021-07-30 10:32:06 字數 3172 閱讀 7515

例項1

<?

php

$str

="select * from tb_book where bookname = 'php專案開發全程實錄'"

;

echo $str."

";

$a

=addslashes

($str

);//對字串中的特殊字元進行轉義

echo $a."

";//輸出轉義後的字元

$b

=stripslashes($a

);//對轉義後的字元進行還原

echo $b."

";//將字元原義輸出

?>

執行結果:

select * from tb_book where bookname = 'php專案開發全程實錄'

select * from tb_book where bookname = \'php專案開發全程實錄\'

select * from tb_book where bookname = 'php專案開發全程實錄'

例項2

"">

<?

php

$a

="程式設計體abc』驗網"

;//對指定範圍內的字元進行轉義

$b

=addcslashes($a

,"程式設計體驗網"

);//轉義指定的字串

echo

"轉義字串:".$b

;//輸出轉義後的字串

echo ""

;//執行換行

$c

=stripcslashes($b

);//對轉義的字串進行還原

echo

"還原字串:".$c

;//輸出還原後的轉義字串

?>

執行結果:

轉義字串:\261\340\263\314\314\345abc』\321\351\315\370

還原字串:程式設計體abc』驗網

執行說明

1、addslashes函式說明

string addslashes ( string $str )

返回字串,該字串為了資料庫查詢語句等的需要在某些字元前加上了反斜線。這些字元是單引號(')、雙引號(")、反斜線(\)與 nul(null 字元)。 

乙個使用addslashes()的例子是當你要往資料庫中輸入資料時。例如,將名字 o'reilly 插入到資料庫中,這就需要對其進行轉義。 

強烈建議使用dbms指定的轉義函式(比如mysql是mysqli_real_escape_string()),但是如果你使用的dbms沒有乙個轉義函式,並且使用\來轉義特殊字元,你可以使用這個函式。 

僅僅是為了獲取插入資料庫的資料,額外的\並不會插入。 

當php指令magic_quotes_sybase被設定成on時,意味著插入'時將使用'進行轉義。 

php5.4之前php指令magic_quotes_gpc預設是on,實際上所有的get、post 和cookie資料都被addslashes()了。不要對已經被magic_quotes_gpc轉義過的字串使用addslashes(),因為這樣會導致雙層轉義。遇到這種情況時可以使用函式 get_magic_quotes_gpc() 進行檢測。 

引數 str

要轉義的字元。 

返回值 

返回轉義後的字元。

2、stripslashes函式說明

string stripslashes ( string $str )

反引用乙個引用字串。 

note: 

如果magic_quotes_sybase項開啟,反斜線將被去除,但是兩個反斜線將會被替換成乙個。 

乙個使用範例是使用php檢測magic_quotes_gpc配置項的開啟情況(在php5.4之前預設是開啟的)並且你不需要將資料插入到乙個需要轉義的位置(例如資料庫)。

例如,你只是簡單地將表單資料直接輸出。 

引數 str

輸入字串。 

返回值 

返回乙個去除轉義反斜線後的字串(\' 轉換為 ' 等等)。雙反斜線(\\)被轉換為單個反斜線(\)。

3、addcslashes

函式說明

string addcslashes ( string $str , string $charlist )

返回字串,該字串在屬於引數charlist列表中的字元前都加上了反斜線。 

引數 str

要轉義的字元。 

charlist

如果charlist中包含有 \n,\r 等字元,將以c語言風格轉換,而其它非字母數字且ascii碼低於32以及高於126的字元均轉換成使用八進位制表示。 

當定義charlist引數中的字串行時,需要確實知道介於自己設定的開始及結束範圍之內的都是些什麼字元。 

返回值返回轉義後的字元。 

4、stripcslashes函式說明

string stripcslashes ( string $str )

返回反轉義後的字串。可識別類似 c 語言的 \n,\r,... 八進位制以及十六進製制的描述。 

引數 str

需要反轉義的字串。 

返回值 

返回反轉義後的字串。

PHP字串轉義

1.magic quotes runtime 2.magic quotes gpc 3.addslashes 和stripslashes 4.mysql escape string 5.addcslashes 和stripcslashes 6.htmlentities 和html entity de...

php 字串轉義

單引號 想表達單引號自身,需要用反斜線 轉義 想表達反斜線 自身,需要用雙反斜線 其他任何轉義序列 r n等,都會當作字串處理 輸出 a bcd echo a bcd 輸出 a bcd echo a bcd 輸出 a bcd echo a bcd 輸出 a nbcd echo a nbcd 雙引號 ...

php字串。轉義字元

輸出時是雙引號時,變數會被解析。單引號包裹的 不識別變數名。在雙引號裡 變數名後緊跟乙個非空字元,會變數識別失敗。name 張三 echo 名字是 name 輸出 名字是 張三 echo 名字是 name 輸出 名字是 name echo 名字是 name 北京 輸出 名字是 name背景 其實是找...