php中字符串,有四种表示方式。分别是 单引号字符串 、双引号字符串、heredoc字符串和nowdoc字符串。也是就是php的字符串有四种可以表达方式。
php中字符串通常是放在引号中间的,单引号或者双引号。这里就一个问题,引号该怎么存储。答案就是使用转义字符。比如使用单引号方式,字符串里存储一个单引号,就可以$str='\''
这样写。 一个反斜杠加上一个单引号字符,在单引号方式中就表示一个单引号。如果是放到双引号中,可以 $str="'"
这样写,因为没有字符的冲突。可见,不同的表示方式,终的解释是不同的。这也是这几种表示方法的差异。
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} 符合该正则表达式序列的是一个以十六进制方式来表达的字符、 - heredoc 方式-- 单引号和单独的反斜线本身不会解析,如果反斜线和之后的组合符合,双引号中的解析规则,也会执行特殊的解析。给 双引号的处理规则类似。
- nowdoc 方式 -- 解析的方式给单引号方式类似。
heredoc 和 nowdoc 的语法
heredoc 开始行有三个左尖括号加一个标识符组成, 结束行只有标识符,前后无空格,作为php的一条语句,后的分号是不能少的。
heredoc的示例
$test = 'this is test';
$str = <<<EOT
string -- $test
// 这里不是注释,会被输出
这个单独的一行
EOT;
终输出的结果
string -- this is test
// 这里不是注释,会被输出
这个单独的一行
nowdoc和heredoc的区别是,语法上,开始行的标识符需要用单引号包括起来。结束标志是相同的。
nowdoc的示例
$test = 'this is test';
$str = <<<'EOT'
string -- $test -- 这里的 $test不会被解析
// 这里不是注释,会被输出
这个单独的一行 \n\n\n
EOT;
echo $str;
输出的结果
string -- $test -- 这里的 $test不会被解析
这里不是注释,会被输出
这个单独的一行 \n\n\n
nowdoc和heredoc的大区别是就不解析变量和符合双引号转义规则的字符组合。