本文主要和大家介绍PHP定义字符串的四种方式,非常不错,具有参考借鉴价值,需要的朋友可以参考下,希望能帮助到大家。
1、简介 在PHP中这门语言中,因为是弱类型语言,因此使用变量时不需提前定义即可使用。 我们在使用php进行开发的时候,大多数使用双引号、单引号进行定义字符串。既然有这两种方式,那么他们之间肯定是有区别的。 并且,除了单双引号定义字符串这两种方式外,php还增加了heredoc和nowdoc这两种语法糖进行补充。 2、单引号与双引号 2.1、单引号 在单引号中,任何特殊字符都会按原样输出【除\、‘将会被转义输出】 eg. <?php
$var = 'this is a var!';
echo '666$var666、'、"、\、
、
、 、$'; 从上面例子中我们可以明显看到,变量是没有被解析的;同时带反斜杠的转义字符仅仅只有单引号、反斜杠被转义输出了,其他的是直接输出。 2.2、双引号 在双引号中,遇到$将会解析该变量; 双引号中会转义反斜杠的转义字符; <?php
$var = 'this is a var!';
echo "666$var 666、'、"、\、
、
、 、$"; | 转义字符代码 | 转义字符的含义 | | " | 双引号 | | ' | 单引号 | | | 反斜杠 | | n | 换行符 | | r | 回车符 | | t | 制表符 | | $ | 美元符号 |
由上面例子我们可以知道,双引号中的变量被解析了,替换成字符串;其他带反斜杠的转义字符都进行了相应的转义。 2.3、单双引号之间的区别 以上两者主要区别: 1、 双引号会替换变量的值,而单引号会把它当做字符串输出。 2、对于转义的支持 3、性能速度问题,由于双引号中的字符串需要检测是否含有$符号修饰的变量,因此从理论上讲,单引号是比较快的。 3、heredoc与nowdoc 3.1、heredoc heredoc可以理解为不使用双引号来定义字符串,但效果与使用双引号一致。【此时双引号相当于普通字符】 语法要求: 1、开始标记和结束标记使用相同的字符串,通常以大写字母来写。 2、开始标记后不能出现空格或多余的字符。 3、结束标记必须顶头写,不能有缩进和空格,且在结束标记末尾要有分号 。 4、位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。 eg. <?php
$var = 'this is suifeng';
echo <<<"EOT"
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8" />
<title>"随风"</title>
</head>
<body>
66666666666<br/>
"666666666"<br/>
$var<br/>
$var<br/>
666<br>
</body>
</html>
EOT; 从打印的结果我们可以看出:此时双引号仅仅只是一个普通字符;其他的效果和双引号的字符串效果一致。 3.2、nowdoc 同理,nowdoc是不使用单引号来定义,但效果相当于使用单引号来定义的字符串。【此时单引号相当于普通字符】 语法同heredoc eg. <?php
$var = 'this is suifeng';
echo <<<'EOT'
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8" />
<title>"随风"</title>
</head>
<body>
'02020'<br/>
'<br/>
66666666666<br/>
"666666666"<br/>
$var<br/>
$var<br/>
666<br>
</body>
</html>
EOT; 注意: 定界符之后必须不能有任何字符【特别是空格字符有时会没注意到】,否则将会出错。 如上例中的EOT后面有空格就会报这个错误:【 Parse error : syntax error, unexpected '<<' (T_SL)】 以上就是四种PHP定义字符串的方式的详细内容,更多请关注php中文网其它相关文章! |