当前位置: 移动技术网 > IT编程>开发语言>PHP > php中heredoc与nowdoc介绍

php中heredoc与nowdoc介绍

2018年07月08日  | 移动技术网IT编程  | 我要评论

heredoc技术,在正规的php文档中和技术书籍中一般没有详细讲述,只是提到了这是一种perl风格的字符串输出技术。但是现在的一些论坛程序,和部分文章系统,都巧妙的使用heredoc技术,来部分的实现了界面与代码的准分离,phpwind模板就是一个典型的例子。  

1.以<<<end开始标记开始,以end结束标记结束,结束标记必须顶头写,不能有缩进和空格,且在结束标记末尾要有分号 。开始标记和开始标记相同,比如常用大写的eot、eod、eof来表示,但是不只限于那几个,只要保证开始标记和结束标记不在正文中出现即可。  

2.位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。在heredoc中,变量不需要用连接符.或,来拼接,如下: 

复制代码 代码如下:

$v=2; 
$a= <<<eof 
"abc"$v 
"123" 
eof; 
echo $a; //结果连同双引号一起输出:"abc"2 "123" 

3.heredoc常用在输出包含大量html语法d文档的时候。比如:函数outputhtml()要输出html的主页。可以有两种写法。很明显第二种写法比较简单和易于阅读。 

复制代码 代码如下:

function outputhtml(){ 
echo "<html>"; 
echo "<head><title>主页</title></head>";  
echo "<body>主页内容</body>"; 
echo "</html>; 

function outputhtml() 

echo <<<eot 
   <html> 
   <head><title>主页</title></head> 
   <body>主页内容</body> 
   </html> 
eot; 

outputhtml(); 

在heredoc中会自动替换其中的$变量,将命令和输入放在一块,方便 

附:heredoc和nowdoc的区别

heredoc使用 <<< eot 的标示符,而nowdoc使用 <<< 'eot' 这样的标示符,其中nowdoc是php5.3引进的新技术,它包含了heredoc的语法,只是其中的内容绝对不会进行任何的转义和解释,是什么内容就是什么内容,不会解析php相关的内容
heredoc中的php变量建议使用{$name->change()} 大括号括起来,这样可以避免一定的歧义,如果要原样输出可以使用传说中的转义字符 \ ,转义字符本身可以使用转义字符进行输出,即 \ 这种表示方法,大括号之类的这些都需要转义输出。
为了保证的确可用,建议使用 heredoc 的语法,本身也带有转义,因为php5.3才引进的nowdoc语法,很多云托管坏境很有可能不支持导致歇菜。
最后强调下,heredoc是从php4.0开始引进的,而nowdoc语法则需要5.3版本,因为heredoc包含了nowdoc的功能,所以个人建议还是使用heredoc比较好些。

简单来说:

1、heredoc是动态的 nowdoc是静态的
2、heredoc类似多行的双引号 newdoc类似多行的单引号
3、heredoc是一种专门处理大段字符串的通用处理方案,而nowdoc是php为了弥补动态实现“heredoc”的效率问题而实现的“高效率”的静态版本

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网