實例1
<head>
<metahttp-equiv="Content-Type"content="text/html; charset=gb2312">
<title>自動對字符串進行轉義和還原</title>
<styletype="text/css">
<!--
body {
background-color: #FFCCFF;
}
-->
</style></head>
<body>
<?php
$str ="select * from tb_book where bookname = 'PHP項目開發全程實錄'";
echo $str."<br>";
$a = addslashes($str);//對字符串中的特殊字符進行轉義
echo $a."<br>";//輸出轉義後的字符
$b = stripslashes($a);//對轉義後的字符進行還原
echo $b."<br>";//將字符原義輸出
?>
</body>
</html>
運行結果:
select * from tb_book where bookname = 'PHP項目開發全程實錄'
select * from tb_book where bookname = \'PHP項目開發全程實錄\'
select * from tb_book where bookname = 'PHP項目開發全程實錄'
實例2
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html; charset=gb2312">
<title>對指定范圍的字符串進行轉義、還原</title>
<styletype="text/css">
<!--
body {
background-color: #FFCCCC;
}
-->
</style></head>
<body>
<?php
$a="編程體abc’驗網";//對指定范圍內的字符進行轉義
$b=addcslashes($a,"編程體驗網");//轉義指定的字符串
echo "轉義字符串:".$b;//輸出轉義後的字符串
echo "<br>";//執行換行
$c=stripcslashes($b);//對轉義的字符串進行還原
echo "還原字符串:".$c;//輸出還原後的轉義字符串
?>
</body>
</html>
運行結果:
轉義字符串:\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
需要反轉義的字符串。
返回值
返回反轉義後的字符串。
來源:http://cakin24.iteye.com/blog/2348605