PHP的HereDoc以Linux系统的“原型文档”(here-document)语法为基础,它允许开发者在脚本中嵌入一段文本内容,如邮件模板,短信模板,HTML/JavaScript脚本等。
它是一种面向字符行的引用,所以定界符是针对行,而不是字符。起始定界符是当前行,结束定界符是一个指定字符的行。例如:
<?php
echo <<<HereDoc
HELLO WORLD! <br />
this is heredoc.
HereDoc;
?>
<<<HereDoc表示开头,以HereDoc结束,表示引用结束。这里<<<后面的HereDoc可以是任何字符,注意结束符之前的文字要与上边文字段落自然换行不要有空格或TAB字符进行缩进操作,否则PHP会提示解析错误。以上代码显示结果:
在HereDoc中可以直接引用PHP变量(该变量已定义),HereDoc会解析该变量,直接显示变量的值,为避免与其他文字混淆,可以用花括号将该变量括起来。代码如下:
<?php
$name = 'weihui'
echo <<<HereDoc
HELLO WORLD! <br />
this is {$name} heredoc.
HereDoc;
?>
显示结果:
如果想在HereDoc内容中显示$打头的字符串,PHP会认为是一个变量,需要进行转义操作。
NowDoc源于HereDoc,语法和HereDoc相似,唯一区别是它使用单引号作为定界符。如代码所示:
<?php
$name = 'zwh123';
echo <<<'NowDoc_test'
HELLO WORLD! <br />
this is {$name} nowdoc.
NowDoc_test;
?>
显示结果:
NowDoc对包含的文本均不做任何解析。在输出时,无论有没有PHP变量,还是特殊字符串,里面的内容都当做纯文本。这非常适合含有代码的内容,比如想在脚本中显示一段PHP源码,动态SQL语句等具有很实用的价值。