1、单、双引号的区别:
双引号中的变量可以解析,单引号就是绝对的字符串;
2、单引号字符串中的 ' 和 \ ;
若要在单引号字符串中,单独的表示, ' 和 \ ,二者需要添加 \ 进行转义;
<?php
echo 'assaf\'ddfs'; //assaf'ddfs 对字符串中的'进行转义;
echo "<br/>";
echo 'assaf\\\'ddfs'; // assaf\'ddfs; 对字符串中的\' 进行转义;
echo "<br/>";
echo 'assaf\ddfs'; // assaf\ddfs; 原型输出;
echo "<br/>";
echo 'assaf\\ddfs'; // assaf\ddfs; 对字符串中的\ 进行转义;
echo "<br/>";
echo 'assaf\\'ddfs'; // 报错,\\ 的意思只是对\的转义,' 在字符串中间,没有进行转义,与字符串两头的界定符' '相互冲突了;
?>
3、双引号中的特殊字符:
(1):\n 换行符:\n的作用是给源代码换行,不是在浏览器直接看到换行效果(浏览器网页用<br/>)。windows 下是"\r\n"
<?php
$m = 'hello\nworld';
echo $m; // 输出 hello\nworld,\n 没有进行转义;
$n = "hello\nworld";
echo $n; // 输出 hello world ,其实第二个单词 world已经是在在第二行开头输出展示的,在浏览器中不能只管的看到,(浏览器中展示看到换行,可以用<br/>进行代替),但在源代码中可以看到;
?>
故:\r\n代表了最古老的换行,windows继承沿用了下来,Unix系统里现在用的是\n代表了换行,而Mac系 统下,\r则代表了换行;
(3):\t 水平制表符(相当于4个或者8个空格);也就是键盘上的Tab健;
(4):\v垂直制表符;
(5):\" 双引号;
(6):\\ 反斜线;
综上:(1)单引号不能解析字符串中的变量;
(2)单引号只能解析简单的转义:\'(')和\\(\);
(3)双引号能解析较为复杂的转义:如\"(")、\$($)、\n\r、\t......等等;
4、php界定符(<<<);
(1)、heredoc类型:
heredoc类似于字符串的双引号,里面的变量能被解析,转义较复杂的特殊字符;
<?php
$sss = <<< TITLE // 界定符“头”名称 可以是任意的(非文本内容中的)字符,只要与“尾”的标记名称保持一致即可;
// 特别注意: 此代码是按原样输出展示的,即:开头的以及中间的 空格、缩进、等何种内容,都会被原样的输出展示出来(源码中能看到具体信息);
似懂非懂规范化, // 注意: 文本中不能有雨”界定符“一样的头尾标记(单词),即此超文本中不能有"TITLE"出现,(防止与头尾自动匹配、发生错误);
sdfghgf\n\r \t; // 与双引号类似,能解析比较复杂的转义和变量内容;
// 原样输出,空格能被输出展示出来;
TITLE; //界定符“尾”名称,1、必要要与"头"名称保持一致;2、必须以一个新的行单独表示“尾“名称(前面不能有空格、缩进等其他字符);、3、"尾"名称后以”;"结束语句;
echo $sss;
?>
(2)、newdoc类型:
newdoc类型和字符串中的单引号一样,不能解析本文中的复杂的转义和变量内容;
他和heredoc区别就是界定符"头"标记用单引号包围起来;
<?php
$sss = <<<'TITLE'//特别注意:界定符“头”标记后,决不能有任何的回车、空格、制表等内容;(加上这个注释后,程序则也会报错,即后面不能跟任何内容);
似懂非懂规范化,
sdfghgf\n\r \t;
TITLE;// 新起一行,前面不能有任何内容;后面也不能有任何内容(由此注释的时候,程序也会报错);注释不能加这,否则程序报错;
echo $sss;
?>