249建站之家:PHP定义字符串的四种方式

1、简介


在PHP中这门语言中,因为是弱类型语言,因此使用变量时不需提前定义即可使用。


我们在使用php进行开发的时候,大多数使用双引号、单引号进行定义字符串。既然有这两种方式,那么他们之间肯定是有区别的。


并且,除了单双引号定义字符串这两种方式外,php还增加了heredoc和nowdoc这两种语法糖进行补充。


2、单引号与双引号


2.1、单引号


在单引号中,任何特殊字符都会按原样输出【除\\、\‘将会被转义输出】


eg.


1 <?php


2 $var = 'this is a var!';

3 echo '666$var666、\'、\"、\\、\n、\r、\t、\$';



从上面例子中我们可以明显看到,变量是没有被解析的;同时带反斜杠的转义字符仅仅只有单引号、反斜杠被转义输出了,其他的是直接输出。


2.2、双引号


在双引号中,遇到$将会解析该变量;


双引号中会转义反斜杠的转义字符;


转义字符代码 转义字符的含义

\ " 双引号

\ ' 单引号

\ \ 反斜杠

\ n 换行符

\ r 回车符

\ t 制表符

\ $ 美元符号

eg.


1 <?php

2 $var = 'this is a var!'; 

3 echo "666$var 666、\'、\"、\\、\n、\r、\t、\$";



由上面例子我们可以知道,双引号中的变量被解析了,替换成字符串;其他带反斜杠的转义字符都进行了相应的转义。


2.3、单双引号之间的区别


以上两者主要区别:


1、 双引号会替换变量的值,而单引号会把它当做字符串输出。


2、对于转义的支持


3、性能速度问题,由于双引号中的字符串需要检测是否含有$符号修饰的变量,因此从理论上讲,单引号是比较快的。


3、heredoc与nowdoc


3.1、heredoc


heredoc可以理解为不使用双引号来定义字符串,但效果与使用双引号一致。【此时双引号相当于普通字符】


语法要求:


1、开始标记和结束标记使用相同的字符串,通常以大写字母来写。


2、开始标记后不能出现空格或多余的字符。


3、结束标记必须顶头写,不能有缩进和空格,且在结束标记末尾要有分号 。


4、位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。


eg.


 1 <?php

 2 

 3 $var = 'this is suifeng';

 4 

 5 echo <<<"EOT"

 6 

 7 <!DOCTYPE html>

 8 <html>

 9 <head>

10     <meta http-equiv="Content-Type" 

 content="text/html; charset=utf8" />

11     <title>"随风"</title>

12 </head>

13 <body>

14 66666666666<br/>

15 "666666666"<br/>

16 $var<br/>

17 \$var<br/>

18 \n666<br>

19 </body>

20 </html>

21 

22 EOT;

249建站之家:PHP定义字符串的四种方式


从打印的结果我们可以看出:此时双引号仅仅只是一个普通字符;其他的效果和双引号的字符串效果一致。


3.2、nowdoc


同理,nowdoc是不使用单引号来定义,但效果相当于使用单引号来定义的字符串。【此时单引号相当于普通字符】


语法同heredoc


eg.


 1 <?php 

 2 

 3 $var = 'this is suifeng'; 4 

 5 echo <<<'EOT'

 6 

 7 <!DOCTYPE html> 

 8 <html> 

 9 <head>

 10     <meta http-equiv="Content-Type" 

 content="text/html; charset=utf8" />

 11     <title>"随风"</title>

 12 </head>

 13 <body>

 14 '02020'<br/>

 15 \'<br/>

 16 66666666666<br/>

 17 "666666666"<br/>

 18 $var<br/>

 19 \$var<br/>

 20 \n666<br>

 21 </body>

 22 </html>

 23 

 24 EOT;



注意:


定界符之后必须不能有任何字符【特别是空格字符有时会没注意到】,否则将会出错。


如上例中的EOT后面有空格就会报这个错误:【 Parse error : syntax error, unexpected '<<' (T_SL)】


推荐

  • QQ空间

  • 新浪微博

  • 人人网

  • 豆瓣

取消