php中heredoc与nowdoc介绍


Posted in PHP onDecember 25, 2014

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”的效率问题而实现的“高效率”的静态版本

PHP 相关文章推荐
PHP.MVC的模板标签系统(二)
Sep 05 PHP
在 PHP 中使用随机数的三个步骤
Oct 09 PHP
NT IIS下用ODBC连接数据库
Oct 09 PHP
PHP 时间日期操作实战
Aug 26 PHP
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
Jul 03 PHP
PHP中获取时间的下一周下个月的方法
Mar 18 PHP
php发送与接收流文件的方法
Feb 11 PHP
CodeIgniter视图使用注意事项
Jan 20 PHP
linux下php上传文件注意事项
Jun 11 PHP
PHP简单实现上一页下一页功能示例
Sep 14 PHP
老生常谈PHP位运算的用途
Mar 12 PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
Jun 02 PHP
php中实现xml与mysql数据相互转换的方法
Dec 25 #PHP
推荐5款跨平台的PHP编辑器
Dec 25 #PHP
主流PHP框架的优缺点对比分析
Dec 25 #PHP
10个简化PHP开发的工具
Dec 25 #PHP
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
Dec 25 #PHP
PHP中文编码小技巧
Dec 25 #PHP
PHP中防止SQL注入方法详解
Dec 25 #PHP
You might like
使ecshop模板中可引用常量的实现方法
2011/06/02 PHP
在WINDOWS中设置计划任务执行PHP文件的方法
2011/12/19 PHP
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
2014/11/18 PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
2015/04/21 PHP
PHP实现根据图片色界在不同位置加水印的方法
2015/08/08 PHP
php提取微信账单的有效信息
2018/10/01 PHP
PHP调用全国天气预报数据接口查询天气示例
2019/02/20 PHP
php日志函数error_log用法实例分析
2019/09/23 PHP
PHPExcel实现的读取多工作表操作示例
2020/04/14 PHP
get(0).tagName获得作用标签示例代码
2014/10/08 Javascript
javascript删除一个html元素节点的方法
2014/12/20 Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
2015/09/04 Javascript
在javascript中随机数 math random如何生成指定范围数值的随机数
2015/10/21 Javascript
AngularJS ng-blur 指令详解及简单实例
2016/07/30 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
2016/09/01 Javascript
Angular 中 select指令用法详解
2016/09/29 Javascript
.vue文件 加scoped 样式不起作用的解决方法
2018/05/28 Javascript
vue-cli项目使用mock数据的方法(借助express)
2019/04/15 Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
2019/08/29 Javascript
JS代码优化的8点建议
2020/02/04 Javascript
vue-router 路由传参用法实例分析
2020/03/06 Javascript
vue3.0生命周期的示例代码
2020/09/24 Javascript
[07:06]2018DOTA2国际邀请赛寻真——卫冕冠军Team Liquid
2018/08/10 DOTA
Python写的贪吃蛇游戏例子
2014/06/16 Python
状态机的概念和在Python下使用状态机的教程
2015/04/11 Python
python实现QQ批量登录功能
2019/06/19 Python
python如何删除列为空的行
2020/07/17 Python
html5通过canvas实现刮刮卡效果示例分享
2014/01/27 HTML / CSS
Omio西班牙:全欧洲低价大巴、火车和航班搜索和比价
2017/02/11 全球购物
澳大利亚新奇小玩意网站:Yellow Octopus
2017/12/28 全球购物
Office DEPOT法国官网:欧迪办公用品采购
2018/01/03 全球购物
舞蹈专业大学生职业规划范文
2014/03/12 职场文书
党员一帮一活动总结
2014/07/08 职场文书
预备党员2014年第四季度思想汇报范文
2014/10/25 职场文书
2015年公路路政个人工作总结
2015/07/24 职场文书
DE1103使用报告
2022/04/05 无线电