在php中我們常會使用到stripslashes與addslashes了, 下面我來詳細的介紹stripslashes與addslashes使用方法與它們之間的區別。
addslashes
addslashes() 函數在指定的預定義字元前添加反斜線。
這些預定義字元是:
•單引號 (')
•雙引號 (")
•反斜線 ()
•NULL
在本例中,我們要向字串中的預定義字元添加反斜線:
注釋:默 認情況下,PHP 指令 magic_quotes_gpc 為 on,對所有的 GET、POST 和 COOKIE 資料自動運行 addslashes()。不要對已經被 magic_quotes_gpc 轉義過的字串使用 addslashes(),因為這樣會導致雙層轉義。遇到這種情況時可以使用函數 get_magic_quotes_gpc() 進行檢測。
| 代碼如下 |
複製代碼 |
/** * 判斷是否用addslashes()處理 * * @param String $str * */ function str_addslashes($str, $db_type='mysql') { if(get_magic_quotes_gpc()){ switch($db_type){ case "access": $str = stripslashes($str); $str = str_replace("'","''",$str); break; } }else { switch($db_type){ case "mysql": $str = addslashes($str); break; case "access": $str = str_replace("'","''",$str); break; } } return $str; } |
自訂函數str_addslashes說明:如果我們在提交過程中不知道magic_quotes_gpc是否開啟的情況下,可採取如此方式進行處理,為on時mysql資料庫不做處理,而access資料庫依然要先去掉,再將單引號替換為雙引號。為off時mysql資料庫加上
stripslashes()
stripslashes() 函數刪除由 addslashes() 函數添加的反斜線。
例
代碼
| 代碼如下 |
複製代碼 |
//提交資料,或者變數準備: $Content=addslashes(”這裡面是資料,不管有沒單引號或者還是變數”); //插入資料到資料庫,代碼省略 //開始顯示資料 $Content=”從資料庫讀取的資料”; if(get_magic_quotes_gpc()){ $Content=stripslashes($Content); } echo $Content; |
區別總結
當magic_quotes_gpc = On時,使用了addslashes()處理後的資料在資料庫中將以’形式儲存,如果此時直接輸出的話,就會發現比自己期待的內容多了個,因此stripslashes()出場了,它能把去掉(區別於str_replace(””, “”,$Str))。
當magic_quotes_gpc = Off時,使用了addslashes()處理後的資料在資料庫中將以’形式儲存,沒有上面說的有的問題,addslashes()起到插入資料不出錯的作用,如果此時直接輸出的話,資料正常。不需要再用stripslashes()。
addslashes()和stripslashes()正好是相反的,直接記憶:addslashes()加個,stripslashes()去個
http://www.bkjia.com/PHPjc/628898.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/628898.htmlTechArticle在php中我們常會使用到stripslashes與addslashes了, 下面我來詳細的介紹stripslashes與addslashes使用方法與它們之間的區別。 addslashes addslashes() 函數...