php中有關單引號和雙引號的使用

2021-08-22 17:24:51 字數 1525 閱讀 4109

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...