有4種定義方式:1、用單引號(hào)包裹字符,語法“'字符內(nèi)容'”;2、用雙引號(hào)包裹字符,語法“"字符內(nèi)容"”;3、用heredoc結(jié)構(gòu),語法“<<<EOF 字符內(nèi)容 EOF;”;4、用nowdoc結(jié)構(gòu),語法“<<<'EOD' 字符內(nèi)容 EOD;”。Nowdoc和heredoc類似,但它中不進(jìn)行變量解析操作;這種結(jié)構(gòu)很適合用于嵌入PHP代碼或其它大段文本而無需對(duì)其中的特殊字符進(jìn)行轉(zhuǎn)義。
本教程操作環(huán)境:windows7系統(tǒng)、PHP8.1版、DELL G3電腦
字符串是連續(xù)的字符序列,在其它語言中,字符和字符串是兩種不同的數(shù)據(jù)類型,但在 PHP 中,統(tǒng)一將字符和字符串當(dāng)作字符串?dāng)?shù)據(jù)類型。
在 PHP 中,定義字符串有4種方式,分別是單引號(hào)方式、雙引號(hào)方式、Heredoc 方式、nowdoc 方式。
“單引號(hào)”定義方式
定義一個(gè)字符串的最簡單的方法是用單引號(hào)把它包圍起來(字符 ')。
要表達(dá)一個(gè)單引號(hào)自身,需在它的前面加個(gè)反斜線()來轉(zhuǎn)義。要表達(dá)一個(gè)反斜線自身,則用兩個(gè)反斜線(\)。其它任何方式的反斜線都會(huì)被當(dāng)成反斜線本身:也就是說如果想使用其它轉(zhuǎn)義序列例如 r 或者 n,并不代表任何特殊含義,就單純是這兩個(gè)字符本身。
注意: 不像雙引號(hào)和 heredoc 語法結(jié)構(gòu),在單引號(hào)字符串中的變量和特殊字符的轉(zhuǎn)義序列將不會(huì)被替換。
示例:
<?php echo 'this is a simple string'; echo '<br>'; // 可以錄入多行 echo 'You can also have embedded newlines in strings this way as it is okay to do'; echo '<br>'; // 輸出: Arnold once said: "I'll be back" echo 'Arnold once said: "I'll be back"'; echo '<br>'; // 輸出: You deleted C:*.*? echo 'You deleted C:\*.*?'; echo '<br>'; // 輸出: You deleted C:*.*? echo 'You deleted C:*.*?'; echo '<br>'; // 輸出: This will not expand: n a newline echo 'This will not expand: n a newline'; echo '<br>'; // 輸出: Variables do not $expand $either echo 'Variables do not $expand $either'; echo '<br>'; ?>
“雙引號(hào)”定義方式
如果字符串是包圍在雙引號(hào)(")中, PHP 將對(duì)以下特殊的字符進(jìn)行解析:
序列 | 含義 |
---|---|
n |
換行(ASCII 字符集中的 LF 或 0x0A (10)) |
r |
回車(ASCII 字符集中的 CR 或 0x0D (13)) |
t |
水平制表符(ASCII 字符集中的 HT 或 0x09 (9)) |
v |
垂直制表符(ASCII 字符集中的 VT 或 0x0B (11)) |
e |
Escape(ASCII 字符集中的 ESC 或 0x1B (27)) |
f |
換頁(ASCII 字符集中的 FF 或 0x0C (12)) |
\ |
反斜線 |
$ |
美元標(biāo)記 |
" |
雙引號(hào) |
[0-7]{1,3} |
符合該正則表達(dá)式序列的是一個(gè)以八進(jìn)制方式來表達(dá)的字符,which silently overflows to fit in a byte (e.g. "400" === " |