单引号、双引号与定界符——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