PHP基礎-資料型別-string

柳旦旦發表於2021-01-19

一個字串 string 就是由一系列的字元組成,其中每個字元等同於一個位元組。

這意味著 PHP 只能支援 256 的字符集,因此不支援 Unicode。

string 最大可以達到 2GB。

語法

一個字串可以用4種方式表達:

  • 單引號
  • 雙引號
  • heredoc 語法結構
  • nowdoc 語法結構(自 php5.5.0 起)

單引號

定義給個字串的最簡單的方法是用單引號把它包圍起來。

要表達一個單引號自身,需要在它的前邊加個反斜線(\)來轉義。

要表達一個反斜線自身,則用兩個反斜線(\)。

其他任何方式的反斜線都會被當成反斜線本身;也就是說如果想使用其他轉義序列,例如 \r 或者 \n,並不代表任何特殊含義,就單純是這兩個字元本身。

不像 雙引號heredoc 語法結構,在單引號字串中的 變數 和特殊字元的轉義序列將不會被替換。

<?php
echo 'this is a simple string';

// 可以錄入多行
echo 'You can also have embedded newlines in 
strings this way as it is
okay to do';

// 輸出: Arnold once said: "I'll be back"
echo 'Arnold once said: "I\'ll be back"';

// 輸出: You deleted C:\*.*?
echo 'You deleted C:\\*.*?';

// 輸出: You deleted C:\*.*?
echo 'You deleted C:\*.*?';

// 輸出: This will not expand: \n a newline
echo 'This will not expand: \n a newline';

// 輸出: Variables do not $expand $either
echo 'Variables do not $expand $either';
?>

雙引號

如果字串是包圍在雙引號(””)中,PHP 將對一些特殊的字元進行解析。

序列 含義
\n 換行(ASCII 字符集中的 LF 或 0x0A (10))
\r 回車(ASCII 字符集中的 CR 或 0x0D (13))
\t 水平製表符(ASCII 字符集中的 HT 或 0x09 (9))
\v 垂直製表符(ASCII 字符集中的 VT 或 0x0B (11))(自 PHP 5.2.5 起)
\e Escape(ASCII 字符集中的 ESC 或 0x1B (27))(自 PHP 5.4.0 起)
\f 換頁(ASCII 字符集中的 FF 或 0x0C (12))(自 PHP 5.2.5 起)
\\ 反斜線
\$ 美元標記
\" 雙引號
\[0-7]{1,3} 符合該正規表示式序列的是一個以八進位制方式來表達的字元
\x[0-9A-Fa-f]{1,2} 符合該正規表示式序列的是一個以十六進位制方式來表達的字元

和單引號字串一樣,轉義任何其他字串都會導致反斜線被顯示出來。php5.1.1以前,\{$var} 中的反斜線還不會被顯示出來。

用雙引號定義的字串最重要的特徵是就是變數會被解析。

Heredoc 結構

第三種表達字串的方法是用 heredoc 句法結構:<<<。在該運算子之後要提供一個識別符號,然後換行。接下來是字串 string 本身,最後要用前面定義的識別符號作為結束標誌。

結束時所引用的識別符號必須在該行的第一列,而且,識別符號的命名也要像其它標籤一樣遵守 PHP 的規則:只能包含字母、數字和下劃線,並且必須以字母和下劃線作為開頭。

本作品採用《CC 協議》,轉載必須註明作者和本文連結
✍️部落格文章皆為網路收藏整理,作書籤使用,方便後期查閱。

相關文章