单引号、双引号与定界符——PHP

单引号与双引号

 

单引号和双引号在echo输出时的区别

echo输出时,如果使用单引号,那么echo会把单引号之间的全部内容当成普通字符串输出,不能识别变量和转义字符(单引号串中的内容总被认为是普通字符

1 $str1 = "Hello";
2 echo '$str1<br/>';

运行结果:

 

 

echo输出时,如果使用双引号,那么echo会识别双引号之间的变量和转义字符

1 $str1 = "Hello";
2 echo '$str1<br/>';
3 echo "$str1<br/>";

运行结果:

在上面的测试代码中,给$str1变量赋值的内容只有普通字符,所以使用单引号和双引号赋值的作用时一样的

------------------------------------------------------

单引号和双引号在给变量赋值时的区别

1 $str1 = "Hello";
2 $str2 = '$str1 my friend';
3 $str3 = "$str1 my friend";
4 echo "$str2<br/>";
5 echo "$str3<br/>";

运行结果:

-----------------------------------------------------

PHP语法分析器是用成对的引号来判断一个字符串的。因此,所有字符串必须使用同一种单或者双引号来定义开始和结束,也就是说可以在双引号中包含单引号,单引号中包含双引号

1 /* 双引号中包含单引号 和 单引号中包含双引号 */
2 $str6 = "Maybe today 'maybe tomorrow'";
3 $str7 = 'Maybe today "maybe tomorrow"';
4 echo "$str6<br/>";
5 echo "$str7<br/>";

运行结果:

 

 

如果想在单引号中包含单引号,双引号中包含双引号,则需要使用转义符\

1 /* 在双引号中包含双引号 */
2 $str8 = "Who How What \"Why\" No";
3 echo "$str8<br/>";
4 
5 /* 在单引号中包含单引号 */
6 $str9 = 'Who How What \'Why\' No';
7 echo "$str9<br/><br/>";

运行结果:

 

 

定界符

使用格式:

1 <<<EOF
2 `````
3 EOF;

 

简单来说定界符的作用有:

1.PHP定界符的作用就是按照原样,包括换行格式什么的,输出在其内部的东西

2.在PHP定界符中的任何特殊字符都不需要转义

3.PHP定界符中的PHP变量会被识别,并用变量本身的值替换

(从上面三条可以看出定界符和双引号非常相似)

 

使用定界符注意事项:

1、EOF 可以用任意其它字符代替,只需保证结束标识与开始标识一致,并且开始标记和结束标记不在正文中出现即可(意思是可以写成如下形式)

<<<TODAY
`````
TODAY;

 

2、结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)

正确的示例:

1 $str1 = 'Hello';
2 echo <<<EOF
3 {$str1}
4 EOF;

运行结果:

 

 

错误的示例:

1 $str1 = 'Hello';
2 echo <<<EOF
3 {$str1}
4  EOF;

运行结果:

 

3、开始标识可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号

第一部分:不带引号与带双引号效果一致

1 $str1 = 'Hello';
2 echo <<<EOF
3 {$str1}
4 EOF;
5 
6 $str2 = 'Hi';
7 echo <<<"EOF"
8 {$str2}
9 EOF;

运行结果:

第二部分:带单引号则不解释内嵌的变量和转义符号

1 $str1 = 'Hello';
2 echo <<<'EOF'
3 {$str1}\n
4 EOF;

运行结果:

 

4、当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义

1 $str1 = 'Hello';
2 echo <<<EOF
3 {$str1}"Hi"'Yo'
4 EOF; 

运行结果: 

 

 

定界符与双引号

 当需要用echo输出大量的html和js代码时,定界符的优势便体现出来了,以html为例,当echo输出的html代码中含有单引号或双引号时,如果使用普通的双引号输出,则需要手动的添加转义符(\)来保证语法不会出错,如果使用定界符则不需要手动添加转义符,测试代码如下

 

使用echo""输出html代码

1 echo "<a href=\"https://www.baidu.com\">此连接使用了href属性</a><br/>";

运行结果:

在上面代码中,如果不对html代码中的双引号添加转义符,则会报错

 

使用echo定界符输出html代码

1 echo <<<EOF
2 <a href="https://www.baidu.com">此连接使用了href属性</a><br/>
3 EOF; 

运行效果:

 

————————————————————————————

编辑器:Notepad++

环境:WampServer Version 3.1.9 64bit

PHP Version:7.3.5 

posted @ 2019-10-22 20:13  Luv3  阅读(2367)  评论(0编辑  收藏  举报