---恢复内容开始---php
2019年2月22日09:49:54正则表达式
参考文档: http://php.net/manual/zh/language.types.string.php#language.types.string.syntax.heredocspa
单引号 ¶ 定义一个字符串的最简单的方法是用单引号把它包围起来(字符 ')。 要表达一个单引号自身,需在它的前面加个反斜线(\)来转义。要表达一个反斜线自身,则用两个反斜线(\\)。其它任何方式的反斜线都会被当成反斜线自己:也就是说若是想使用其它转义序列例如 \r 或者 \n,并不表明任何特殊含义,就单纯是这两个字符自己。
双引号 ¶ 若是字符串是包围在双引号(")中, PHP 将对一些特殊的字符进行解析: 转义字符 序列 含义 \n 换行(ASCII 字符集中的 LF 或 0x0A (10)) \r 回车(ASCII 字符集中的 CR 或 0x0D (13)) \t 水平制表符(ASCII 字符集中的 HT 或 0x09 (9)) \v 垂直制表符(ASCII 字符集中的 VT 或 0x0B (11))(自 PHP 5.2.5 起) \e Escape(ASCII 字符集中的 ESC 或 0x1B (27))(自 PHP 5.4.0 起) \f 换页(ASCII 字符集中的 FF 或 0x0C (12))(自 PHP 5.2.5 起) \\ 反斜线 \$ 美圆标记 \" 双引号 \[0-7]{1,3} 符合该正则表达式序列的是一个以八进制方式来表达的字符 \x[0-9A-Fa-f]{1,2} 符合该正则表达式序列的是一个以十六进制方式来表达的字符 和单引号字符串同样,转义任何其它字符都会致使反斜线被显示出来。PHP 5.1.1 之前,\{$var} 中的反斜线还不会被显示出来。
Heredoc 结构 ¶ 第三种表达字符串的方法是用 heredoc 句法结构:<<<。在该运算符以后要提供一个标识符,而后换行。接下来是字符串 string 自己,最后要用前面定义的标识符做为结束标志。 结束时所引用的标识符必须在该行的第一列,并且,标识符的命名也要像其它标签同样遵照 PHP 的规则:只能包含字母、数字和下划线,而且必须以字母和下划线做为开头。 Warning 要注意的是结束标识符这行除了可能有一个分号(;)外,绝对不能包含其它字符。这意味着标识符不能缩进,分号的先后也不能有任何空白或制表符。更重要的是结束标识符的前面必须是个被本地操做系统承认的换行,好比在 UNIX 和 Mac OS X 系统中是 \n,
而结束定界符(可能其后有个分号)以后也必须紧跟一个换行。 若是不遵照该规则致使结束标识不“干净”,PHP 将认为它不是结束标识符而继续寻找。若是在文件结束前也没有找到一个正确的结束标识符,PHP 将会在最后一行产生一个解析错误。 Heredocs 结构不能用来初始化类的属性。自 PHP 5.3 起,此限制仅对 heredoc 包含变量时有效。
$code = <<<CODE <?php $string; CODE;
$string;会是变量
Nowdoc 结构 ¶ 就象 heredoc 结构相似于双引号字符串,Nowdoc 结构是相似于单引号字符串的。Nowdoc 结构很象 heredoc 结构,可是 nowdoc 中不进行解析操做。这种结构很适合用于嵌入 PHP 代码或其它大段文本而无需对其中的特殊字符进行转义。与 SGML 的 <![CDATA[ ]]>
结构是用来声明大段的不用解析的文本相似,nowdoc 结构也有相同的特征。 一个 nowdoc 结构也用和 heredocs 结构同样的标记 <<<, 可是跟在后面的标识符要用单引号括起来,即 <<<'EOT'。Heredoc 结构的全部规则也一样适用于 nowdoc 结构,尤为是结束标识符的规则。
Heredoc 就像单引号的同样不解析,
$code = <<<CODE <?php $string; CODE;
$string;会被解析
Nowdoc 双引号解析定界符里面的内容
$code = <<<"CODE" <?php $string; CODE;
OR操作系统
$code = <<<'CODE' <?php $string; CODE;
$string;不会被解析