在PHP中,字符串的定义可以使用英文单引号' ',也可以使用英文双引号" ",heredoc和nowdoc。
单引号串中的内容总被认为是普通字符,因此单引号中的内容不会被转义效率更高。比如:
$str='hello';
echo "str is $str"; //运行结果: str is hello
echo 'str is $str'; //运行结果: str is $str
PHP中,双引号中的变量($var)和特殊字符(\r\n之类)会被转义,单引号中的内容不会被转义。
我以前很喜欢在sql字符串里这样写$sql = "SELECT * FROM table WHERE id = $id",这样里面的$id可以被转义,单引号就不行。
heredoc和nowdoc适合大内容的字符串。
- 开始标记和结束标记使用相同的字符串,通常以大写字母来写。
- 开始标记后不能出现空格或多余的字符。
- 结束标记必须顶头写,不能有缩进和空格,且在结束标记末尾要有分号 。
- 位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。在heredoc中,变量不需要用连接符.或,来拼接 。
heredoc相当于双引号
<?php
$name = '小白';
$t = <<<EOF
你好我是{$name},我们交个盆友吧!
EOF;
echo $t;
输出:你好我是小白,我们交个盆友吧!
nowdoc的技术,他与heredoc的写法差不多,唯一的区别是必须在结束标识符要用单引号括起来。类似于单引号字符串的
<?php
$name = '小白';
$t = <<<'EOF'
你好我是{$name},我们交个盆友吧!
EOF;
echo $t;
输出:你好我是{$name},我们交个盆友吧!