php
中單引號和雙引號具有不同的含義,最大的幾項區別如下:
單引號中,任何變數($var)
、特殊轉義字元(
如「/t /r /n
」等)不會被解析,因此php
的解析速度更快,轉義字元僅僅支援「/』
」和「//
」這樣對單引號和反斜槓本身的轉義;
雙引號中,變數($var)
值會代入字串中,特殊轉義字元也會被解析成特定的單個字元,還有一些專門針對上述兩項特性的特殊功能性轉義,例如「/$
」和「。這樣雖然程式編寫更加方便,但同時php
的解析也很慢;
陣列中,如果下標不是整型,而是字串型別,請務必用單引號將下標括起,正確的寫法為$array[『key』]
,而不是$array[key]
,因為不正確的寫法會使php
解析器認為key
是乙個常量,進而先判斷常量是否存在,不存在時才以「key
」作為下標帶入表示式中,同時出發錯誤事件,產生一條notice
級錯誤。
因此,在絕大多數可以使用單引號的場合,禁止使用雙引號。依據上述分析,可以或必須使用單引號的情況包括但不限於下述:
l字串為固定值,不包含「/t
」等特殊轉義字元;
l陣列的固定下標,例如$array[『key』]
; l表示式中不需要帶入變數,例如$string = 『test』;
,而非$string = 「test$var」
; 例外的,在正規表示式(
用於preg_
系列函式和ereg
系列函式)
中,phpcms
全部使用雙引號,這是為了人工分析和編寫的方便,並保持正規表示式的統一,減少不必要的分析混淆。
資料庫sql
語句中,所有資料都不得加單引號,但是在進行sql
查詢之前都必須經過intval
函式處理;所有字串都必須加單引號,以避免可能的注入漏洞和sql
錯誤。正確的寫法為:
$catid = intval($catid);
select * from phpcms_member where username=』$_username』 and catid=$catid;
所有資料在插入資料庫之前,均需要進行addslashes()
處理,以免特殊字元未經轉義在插入資料庫的時候出現錯誤。phpcms
中如果已經引入了檔案 common.inc.php
,則所有通過 get, post, file,
取得的變數預設情況下已經使用了addslashes()
進行了轉義,不必重複進行。如果資料處理必要(
例如用於直接顯示)
,可以使用 stripslashes()
恢復,但資料在插入資料庫之前必須再次進行轉義。
快取檔案中,一般對快取資料的值採用 addcslashes($string, '/'//')
進行轉義。
單引號和雙引號
char p1 1 char p2 1 1 的ascii碼值為49 0和49位址處為作業系統使用,故訪問這些位址如printf s,s,s p1,p2,p3 會產生段錯誤。printf n n的ascii碼值為10,同理,段錯誤。a 表示字元常量,在記憶體中佔1個位元組,a 1表示 a 的ascii...
單引號( )和雙引號( )
關鍵是要養成良好的習慣.單引號 一般用在單字元,如 c 雙引號 一般用在字串,如 abc 如果巢狀使用的話,一般用交替方法,尤其是html中.如,也可以改成.在分割乙個字串時要用到str.split或者regex.split。簡單的單個字串的替換,直接用字串.split 單個字串 多個字串的替換用r...
ASP中有關雙引號,單引號以及 號的解釋
很多asp初學習的朋友都有可能在雙引號,單引號以及 號上迷失了方向。最關鍵的是不理解三類符號的意思,當然也就不能很好地掌握它們的用法了。以下是我對三類符號的看法,技術不精,難免有疏忽之處,肯請大家多提意見。1,雙引號 asp中處在雙引號中的可以是任意的字元 字串,html 比如 response.w...