PHP在引號前面添加反斜槓的緣由及PHP去除反斜槓的辦法
昨天用PHP作了個讀寫html文檔的小程序,本地測試正常可是傳到網站後發現,提交內容保存的時候會自動在雙引號前面增長一個反斜槓「\」,並且每保存一次增長一個反斜槓,非常鬱悶。
固然作這個只是爲了參加電商圈的網站進行更新,由於懶得裝cms和博客程序了,就直接用php在線修改html文檔來更新文字吧。
從網上搜了一下原來是PHP程序爲了防止注入或者溢出,經過PHP 指令 magic_quotes_gpc自動在雙引號、單引號、反斜槓、NULL前面添加反斜槓「\」。
可是咱們爲了讀寫html文檔,裏面天然有不少引號和雙引號,這時候就要去掉添加的反斜槓。
默認PHP 指令 magic_quotes_gpc是on的,也就是打開的。這時候就能夠用stripslashes() 函數刪除自動添加的反斜槓。用法就是:好比包含字符串的變量是$str,那麼就用stripslashes() 函數處理一下這個字符串:stripslashes($str),輸出的結果就是去掉反斜槓的。
因而我就把讀取的字符串內容用stripslashes()函數處理一下,即$str=stripslashes($str),再保存。上傳網站以後正常了。
可是又出現另一個問題,那就是由於本地PHP 指令 magic_quotes_gpc是off的,若是用這個函數的話,就會把原本正常的反斜槓也去掉了。這樣就不是咱們所但願的了。
解決辦法就是可使用函數 get_magic_quotes_gpc() 進行檢測,若是是打開的狀態,那麼就去除反斜槓,若是是關閉的狀態,則不去除反斜槓。
程序代碼以下:
1
2
3
4
5
6
7
8
9
$str=$_POST["str"];
if(get_magic_quotes_gpc())
{
$str=stripslashes($str);
}
修改以後的程序在本地和網站上測試都正常了。