PHP 字串表示方法,你都瞭解嗎?
PHP的字串表示方法,你都瞭解嗎?
表示字串是PHP的第一關。沒有一個程式能離開字串。但是你知道字串的表示方法的有多少種方式,有多麼魔幻嗎?如果你仔細看過這篇文章,必將能給你的PHP之旅帶來幫助。
字串可以用三種字面上的方法定義,
1.單引號
2.雙引號
3.定界符(HERE文檔)
單引號指定一個簡單字串的最簡單的方法是用單引號(’)括起來。 例如:
echo 'We are letters!';
echo '也可以有中文';
echo '也能直接包含換行
這是第二行了
第三行
';單引號裏不能再出現單引號。要在單引號裏表示一個單引號,需要用反斜線(\)轉義,和很多其他語言一樣。如果在單引號之前或字串結尾需要出現一個反斜線,需要用兩個反斜線表示。注意如果試圖轉義任何其他字元(即除了\和’),反斜線本身也會被顯示出來!所以通常不需要轉義反斜線本身。
echo '這裏有一個單引號\',呵呵';
echo '兩個反斜杠表示一個反斜杠\\,嘿嘿';
echo '如果反斜杠後邊不是單引號或者反斜杠,這個反斜杠會直接顯示出來\,\n, \t恩...';埋伏一句,和其他兩種語法不同,單引號字串中出現的變數和轉義序列不會被變數的值替代。
=================================================
雙引號如果用雙引號(”)括起字串,PHP有更強大的功能。
雙引號中支持更多的轉義序列:
序列 含義
\n 換行(LF 或 ASCII 字元 0×0A(10))
\r 回車(CR 或 ASCII 字元 0×0D(13))
\t 水準跳位字元(HT 或 ASCII 字元 0×09(9))
\\ 反斜線
\$ 美元符號
\” 雙引號
\[0-7]{1,3} 此正則運算式序列匹配一個用八進制符號表示的字元
\x[0-9A-Fa-f]{1,2} 此正則運算式序列匹配一個用十六進位符號表示的字元
此外,和單引號一樣,如果試圖轉義任何其他字元,反斜線本身也會被顯示出來!在 PHP 5.1.1 之前,\{$var} 中的反斜線不會被顯示出來。
雙引號中要出現雙引號必須用
如果遇到美元符號($),解析器會盡可能多地取得後面的字元以組成一個合法的變數名。如果想明示指定名字的結束,用花括弧把變數名括起來。
$beer = 'Heineken';
echo "$beer's taste is great"; // 工作,? $beer被替換成Heineken,雙引號裏可以出現單引號
echo "He drank some $beers"; // 工作,但是沒有$beers這個變數,所以$beers被替換成空
echo "He drank some ${beer}s"; //工作
echo "He drank some {$beer}s"; // 工作
echo "<a href=\"http://www.bnet.cm.cn/" target=\"_blank\" title=\"商業英才網\">BNET</a>"; //有很多雙引號,這時用定界符就比較方便了同樣也可以解析陣列索引或者物件屬性。對於陣列索引,右方括號(])標誌著索引的結束。
error_reporting(E_ALL);
$fruits = array('strawberry' => 'red', 'banana' => 'yellow');
//工作,但是banana首先是被當做一個常量,當沒有定義這個常量是以字串看待,所以,這種方式存在隱患
echo "A banana is $fruits[banana]";
// 工作,這是陣列標準的寫法,推薦
echo "A banana is {$fruits['banana']}.";
// 不工作,這是必須用{}括起來
echo "A banana is $fruits['banana'].";
// 工作
echo "This square is $square->width meters broad.";
//變數替換可以將很多語法化簡,例如:
echo "我的名字是" . $name . ",你的呢?";
=================================================
定界符(HERE文檔)另一種給字串定界的方法使用定界符語法(”<<<”)。應該在 <<< 之後提供一個識別字,然後是字串,然後是同樣的識別字結束字串。
結束識別字必須從行的第一列開始。同樣,識別字也必須遵循 PHP 中其他任何標籤的命名規則:只能包含字母數位下劃線,而且必須以下劃線或非數位字元開始。
例如:
$outstr = <<<EOF
這裏可以有單引號和雙引號和同於雙引號的轉義序列
'
"
\n
\\
EOF;定界符優與雙引號的一點就是可以包含雙引號和單引號。
很重要的一點必須指出,結束識別字所在的行不能包含任何其他字元,可能除了一個分號(;)之外。這尤其意味著該識別字不能被縮進,而且在分號之前和之後都不能有任何空格或跳位字元。同樣重要的是要意識到在結束識別字之前的第一個字元必須是你的作業系統中定義的換行符。例如在 Macintosh 系統中是 \r。
如果破壞了這條規則使得結束識別字不”乾淨”,則它不會被視為結束識別字,PHP 將繼續尋找下去。如果在這種情況下找不到合適的結束識別字,將會導致一個在腳本最後一行出現的語法錯誤。
不能用定界符語法初始化類成員。用其他字串語法替代。
定界符文本表現的就和雙引號字串一樣,只是沒有雙引號。這意味著在定界符文本中不需要轉義引號,不過仍然可以用以上列出來的轉義代碼。變數會被展開,但當在定界符文本中表達複雜變數時和字串一樣同樣也要注意。
表示字串是PHP的第一關。沒有一個程式能離開字串。但是你知道字串的表示方法的有多少種方式,有多麼魔幻嗎?如果你仔細看過這篇文章,必將能給你的PHP之旅帶來幫助。
字串可以用三種字面上的方法定義,
1.單引號
2.雙引號
3.定界符(HERE文檔)
單引號指定一個簡單字串的最簡單的方法是用單引號(’)括起來。 例如:
echo 'We are letters!';
echo '也可以有中文';
echo '也能直接包含換行
這是第二行了
第三行
';單引號裏不能再出現單引號。要在單引號裏表示一個單引號,需要用反斜線(\)轉義,和很多其他語言一樣。如果在單引號之前或字串結尾需要出現一個反斜線,需要用兩個反斜線表示。注意如果試圖轉義任何其他字元(即除了\和’),反斜線本身也會被顯示出來!所以通常不需要轉義反斜線本身。
echo '這裏有一個單引號\',呵呵';
echo '兩個反斜杠表示一個反斜杠\\,嘿嘿';
echo '如果反斜杠後邊不是單引號或者反斜杠,這個反斜杠會直接顯示出來\,\n, \t恩...';埋伏一句,和其他兩種語法不同,單引號字串中出現的變數和轉義序列不會被變數的值替代。
=================================================
雙引號如果用雙引號(”)括起字串,PHP有更強大的功能。
雙引號中支持更多的轉義序列:
序列 含義
\n 換行(LF 或 ASCII 字元 0×0A(10))
\r 回車(CR 或 ASCII 字元 0×0D(13))
\t 水準跳位字元(HT 或 ASCII 字元 0×09(9))
\\ 反斜線
\$ 美元符號
\” 雙引號
\[0-7]{1,3} 此正則運算式序列匹配一個用八進制符號表示的字元
\x[0-9A-Fa-f]{1,2} 此正則運算式序列匹配一個用十六進位符號表示的字元
此外,和單引號一樣,如果試圖轉義任何其他字元,反斜線本身也會被顯示出來!在 PHP 5.1.1 之前,\{$var} 中的反斜線不會被顯示出來。
雙引號中要出現雙引號必須用
如果遇到美元符號($),解析器會盡可能多地取得後面的字元以組成一個合法的變數名。如果想明示指定名字的結束,用花括弧把變數名括起來。
$beer = 'Heineken';
echo "$beer's taste is great"; // 工作,? $beer被替換成Heineken,雙引號裏可以出現單引號
echo "He drank some $beers"; // 工作,但是沒有$beers這個變數,所以$beers被替換成空
echo "He drank some ${beer}s"; //工作
echo "He drank some {$beer}s"; // 工作
echo "<a href=\"http://www.bnet.cm.cn/" target=\"_blank\" title=\"商業英才網\">BNET</a>"; //有很多雙引號,這時用定界符就比較方便了同樣也可以解析陣列索引或者物件屬性。對於陣列索引,右方括號(])標誌著索引的結束。
error_reporting(E_ALL);
$fruits = array('strawberry' => 'red', 'banana' => 'yellow');
//工作,但是banana首先是被當做一個常量,當沒有定義這個常量是以字串看待,所以,這種方式存在隱患
echo "A banana is $fruits[banana]";
// 工作,這是陣列標準的寫法,推薦
echo "A banana is {$fruits['banana']}.";
// 不工作,這是必須用{}括起來
echo "A banana is $fruits['banana'].";
// 工作
echo "This square is $square->width meters broad.";
//變數替換可以將很多語法化簡,例如:
echo "我的名字是" . $name . ",你的呢?";
=================================================
定界符(HERE文檔)另一種給字串定界的方法使用定界符語法(”<<<”)。應該在 <<< 之後提供一個識別字,然後是字串,然後是同樣的識別字結束字串。
結束識別字必須從行的第一列開始。同樣,識別字也必須遵循 PHP 中其他任何標籤的命名規則:只能包含字母數位下劃線,而且必須以下劃線或非數位字元開始。
例如:
$outstr = <<<EOF
這裏可以有單引號和雙引號和同於雙引號的轉義序列
'
"
\n
\\
EOF;定界符優與雙引號的一點就是可以包含雙引號和單引號。
很重要的一點必須指出,結束識別字所在的行不能包含任何其他字元,可能除了一個分號(;)之外。這尤其意味著該識別字不能被縮進,而且在分號之前和之後都不能有任何空格或跳位字元。同樣重要的是要意識到在結束識別字之前的第一個字元必須是你的作業系統中定義的換行符。例如在 Macintosh 系統中是 \r。
如果破壞了這條規則使得結束識別字不”乾淨”,則它不會被視為結束識別字,PHP 將繼續尋找下去。如果在這種情況下找不到合適的結束識別字,將會導致一個在腳本最後一行出現的語法錯誤。
不能用定界符語法初始化類成員。用其他字串語法替代。
定界符文本表現的就和雙引號字串一樣,只是沒有雙引號。這意味著在定界符文本中不需要轉義引號,不過仍然可以用以上列出來的轉義代碼。變數會被展開,但當在定界符文本中表達複雜變數時和字串一樣同樣也要注意。
留言
張貼留言