PHP的字符串有三種定義方式:單引號 、雙引號 、定界符
1、單引號:指定一個簡單字符串的最簡單的方法是用單引號(字符 ')括起來。 在被單引號括起來的字符串中,要再表示一個單引號,需要用反斜線(\)轉義,和很多其它語言一樣。如果在單引號之前或字符串結尾需要出現一個反斜線,需要用兩個反斜線表示。 在單引號括起來的字符串中,所有的其他特殊字符,都將被完整的表示出來,也就是說:單引號字符串中出現的變量和轉義序列不會被變量的值替代。
2、雙引號:如果用雙引號(")括起字符串,PHP 可以解析更多特殊字符的轉義序列:\n (換行 LF 或 ASCII 字符 0x0A(10))、\r (回車(CR 或 ASCII 字符 0x0D(13))、\t (水平制表符 HT 或 ASCII 字符 0x09(9))、\\ (反斜線) 、\$ (美元符號) 、\" (雙引號) 、\[0-7]{1,3} (此正則表達式序列匹配一個用八進制符號表示的字符)、\x[0-9A-Fa-f]{1,2} (此正則表達式序列匹配一個用十六進制符號表示的字符 ),除了這些轉義符,如果試圖轉義任何其它字符,反斜線本身也會被顯示出來!在 PHP 5.1.1 之前,\{$var} 中的反斜線不會被顯示出來。
當用雙引號或者定界符指定字符串時,其中的變量會被解析。 有兩種語法,一種簡單的和一種復雜的。
簡單語法最通用和方便,它提供了解析變量,數組值,或者對象屬性的方法(如果遇到美元符號($),解析器會盡可能多地取得后面的字符以組成一個合法的變量名。如果想明示指定名字的結束,則用花括號把變量名括起來。 同樣也可以解析數組索引或者對象屬性。對於數組索引,右方括號(])標志着索引的結束。對象屬性則和簡單變量適用同樣的規則,盡管對於對象屬性沒有像變量那樣的小技巧)。
復雜語法是 PHP 4 引進的,可以用花括號括起一個表達式(事實上,用此語法可以在字符串中包含任何在名字空間的值。僅僅用和在字符串之外同樣的方法寫一個表達式,然后用 { 和 } 把它包含進來。因為不能轉義“{”,此語法僅在 $ 緊跟在 { 后面時被識別(用“{\$”來得到一個字面上的“{$”)。例如:${test},{$test['t']['e']['s']['t']},{$test->test})。
3、定界符:另一種給字符串定界的方法使用定界符語法(“<<<”),它是 PHP 4 中加入的。。應該在 <<< 之后提供一個標識符,然后是字符串,然后是同樣的標識符結束字符串。 結束標識符必須從行的第一列開始。同樣,標識符也必須遵循 PHP 中其它任何標簽的命名規則:只能包含字母數字下划線,而且必須以下划線或非數字字符開始。 重要的一點必須指出,結束標識符所在的行不能包含任何其它字符,可能除了一個分號(;)之外。這尤其意味着該標識符不能被縮進,而且在分號之前和之后都不能有任何空格或制表符。同樣重要的是要意識到在結束標識符之前的第一個字符必須是你的操作系統中定義的換行符。例如在 Macintosh 系統中是 \r。 如果破壞了這條規則使得結束標識符不“干凈”,則它不會被視為結束標識符,PHP 將繼續尋找下去。如果在這種情況下找不到合適的結束標識符,將會導致一個在腳本最后一行出現的語法錯誤。 不能用定界符語法初始化類成員。用其它字符串語法替代。
定界符文本表現的就和雙引號字符串一樣,只是沒有雙引號。這意味着在定界符文本中不需要轉義引號,不過仍然可以用以上列出來的轉義代碼。變量會被展開,但當在定界符文本中表達復雜變量時和字符串一樣同樣也要注意。
$str=<<<AA
Hello world
AA;