A. php輸入一個單引號為何輸出一個斜杠
在為wordpress後台添加統計代碼控制功能時,發現凡是提交到資料庫的內容中只要是帶有單引號或者雙引號的內容時,後面都會增加一個反斜杠。而且每保存一次增加一個反斜杠,很是郁悶。
從網上搜了一下原來是PHP程序為了防止注入或者溢出,通過PHP 指令 magic_quotes_gpc自動在雙引號、單引號、反斜杠、NULL前面添加反斜杠「」。
統計代碼中自然是會帶有很多反斜杠的內容,這時候就要去掉添加的反斜杠。
默認PHP 指令 magic_quotes_gpc是on的,也就是打開的。這時候就可以用stripslashes() 函數刪除自動添加的反斜杠。用法就是:比如包含字元串的變數是$str,那麼就用stripslashes() 函數處理一下這個字元串:stripslashes($str),輸出的結果就是去掉反斜杠的。
於是我就把讀取的字元串內容用stripslashes()函數處理一下,即$value=stripslashes($str),再保存。上傳網站之後正常了。
但是又出現另外一個問題,那就是因為本地PHP 指令 magic_quotes_gpc是off的,如果用這個函數的話,就會把本來正常的反斜杠也去掉了。這樣就不是我們所希望的了。
解決辦法就是可以使用函數 get_magic_quotes_gpc() 進行檢測,如果是打開的狀態,那麼就去除反斜杠,如果是關閉的狀態,則不去除反斜杠。
程序代碼如下:
$str=$_POST["str"];//讀取str的內容賦值給$str變數
if(get_magic_quotes_gpc())//如果get_magic_quotes_gpc()是打開的
{
$str=stripslashes($str);//將字元串進行處理
}
對指定的函數進行修改於測試,發現斜杠不會再繼續添加了。
本篇轉自轉載: 品味人生
B. php 系統路徑dirname(__FILE__)輸入的是反斜杠「\」,一般路徑都是斜杠「/」,這不沖突嗎
主要是windows和linux環境區別! win下備殲面物理路徑是\ ,linux下是/,但一般改滾畢用/,已核芹保證兼容性,如果你用的是\那麼在linux上可能就會出問題。純手打,望採納。
C. PHP中addslashes()和stripslashes()實現字元串轉義和還原用法實例
本文實例講述了PHP中addslashes()和stripslashes()實現字元串轉義和還原用法。分享給大家供大家參考,具體如下:
PHP中addslashes()
函數返回在預定義字元之前添加反斜杠的字元串。
預定義字元是:
單引號(')
雙引號(")
反斜杠(\)
NULL
stripslashes()
函數刪除由
addslashes()
函數添加的反斜杠。
用法示例如下:
<?php
$str="select
*
from
`book`
where
bookname='腳本之家'";
echo
$str."<br/>";//輸出字元串$str
echo
$astr=addslashes($str);//字元串轉義並輸出
echo
"<br/>";
echo
stripslashes($astr);//將轉義字元串還原
?>
運行結果如下:
select
*
from
`book`
where
bookname='腳本之家'
select
*
from
`book`
where
bookname=\'腳本之家\'
select
*
from
`book`
where
bookname='腳本之家'
補充:
addslashes()與addcslashes()函數的區別:
這是兩個寫法非常相近但是使用有所區別的函數,addslashes()
函數返回在預定義字元之前添加反斜杠的字元串,而addcslashes()
函數返回在指定字元前添加反斜杠的字元串,因此addcslashes()
函數需要添加附加參數說明需要添加反斜杠的具體字元。
二者具體區別與用法可參考本站相關文章《解析php
addslashes()與addcslashes()函數的區別和比較》
希望本文所述對大家PHP程序設計有所幫助。