有4种定义方式:1、用单引号包裹字符,语法“'字符内容'”;2、用双引号包裹字符,语法“"字符内容"”;3、用heredoc结构,语法“<<<EOF 字符内容 EOF;”;4、用nowdoc结构,语法“<<<'EOD' 字符内容 EOD;”。Nowdoc和heredoc类似,但它中不进行变量解析操作;这种结构很适合用于嵌入PHP代码或其它大段文本而无需对其中的特殊字符进行转义。
本教程操作环境:windows7系统、PHP8.1版、DELL G3电脑
字符串是连续的字符序列,在其它语言中,字符和字符串是两种不同的数据类型,但在 PHP 中,统一将字符和字符串当作字符串数据类型。
在 PHP 中,定义字符串有4种方式,分别是单引号方式、双引号方式、Heredoc 方式、nowdoc 方式。
“单引号”定义方式
定义一个字符串的最简单的方法是用单引号把它包围起来(字符 ')。
要表达一个单引号自身,需在它的前面加个反斜线()来转义。要表达一个反斜线自身,则用两个反斜线(\)。其它任何方式的反斜线都会被当成反斜线本身:也就是说如果想使用其它转义序列例如 r 或者 n,并不代表任何特殊含义,就单纯是这两个字符本身。
注意: 不像双引号和 heredoc 语法结构,在单引号字符串中的变量和特殊字符的转义序列将不会被替换。
示例:
<?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>'; ?>
“双引号”定义方式
如果字符串是包围在双引号(")中, PHP 将对以下特殊的字符进行解析:
序列 | 含义 |
---|---|
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)) |
\ |
反斜线 |
$ |
美元标记 |
" |
双引号 |
[0-7]{1,3} |
符合该正则表达式序列的是一个以八进制方式来表达的字符,which silently overflows to fit in a byte (e.g. "400" === " |