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程序--记数器
Oct 09 PHP
其他功能
Oct 09 PHP
使PHP自定义函数返回多个值
Nov 26 PHP
php下统计用户在线时间的一种尝试
Aug 26 PHP
PHP调用Webservice实例代码
Jul 29 PHP
具有时效性的php加密解密函数代码
Jun 19 PHP
PHP常用编译参数中文说明
Sep 27 PHP
Thinkphp多文件上传实现方法
Oct 31 PHP
[原创]CI(CodeIgniter)简单统计访问人数实现方法
Jan 19 PHP
PHP模糊查询的实现方法(推荐)
Sep 06 PHP
php微信开发之自定义菜单完整流程
Oct 08 PHP
laravel框架分组控制器和分组路由实现方法示例
Jan 25 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
PHP的autoload自动加载机制使用说明
2010/12/28 PHP
php 获取页面中指定内容的实现类
2014/01/23 PHP
php根据isbn书号查询amazon网站上的图书信息的示例
2014/02/13 PHP
四个PHP非常实用的功能
2015/09/29 PHP
根据出生日期自动取得星座的js代码
2010/07/20 Javascript
js创建数据共享接口——简化框架之间相互传值
2011/10/23 Javascript
nodejs win7下安装方法
2012/05/24 NodeJs
js图片延迟加载的实现方法及思路
2013/07/22 Javascript
在firefox和Chrome下关闭浏览器窗口无效的解决方法
2014/01/16 Javascript
JavaScript实现动态创建CSS样式规则方案
2014/09/06 Javascript
黑帽seo劫持程序,js劫持搜索引擎代码
2015/09/15 Javascript
JavaScript中字符串与Unicode编码互相转换的实现方法
2015/12/18 Javascript
Angularjs 设置全局变量的方法总结
2016/10/20 Javascript
node 利用进程通信实现Cluster共享内存
2017/10/27 Javascript
vue+vue-validator 表单验证功能的实现代码
2017/11/13 Javascript
解决vue2中使用axios http请求出现的问题
2018/03/05 Javascript
Node.js应用设置安全的沙箱环境
2018/04/23 Javascript
详解在HTTPS 项目中使用百度地图 API
2019/04/26 Javascript
python实现list元素按关键字相加减的方法示例
2017/06/09 Python
Python实现的爬虫功能代码
2017/06/24 Python
django中使用事务及接入支付宝支付功能
2019/09/15 Python
Python通过Manager方式实现多个无关联进程共享数据的实现
2019/11/07 Python
python中使用paramiko模块并实现远程连接服务器执行上传下载功能
2020/02/29 Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
2020/07/02 Python
Python制作数据预测集成工具(值得收藏)
2020/08/21 Python
解决PyCharm不在run输出运行结果而不是再Console里输出的问题
2020/09/21 Python
Python eval函数原理及用法解析
2020/11/14 Python
初三学习计划书范文
2014/04/30 职场文书
公司新人试用期自我评价
2014/09/17 职场文书
法定代表人授权委托书范文
2014/09/22 职场文书
小学教师师德整改措施
2014/09/29 职场文书
党员干部四风问题整改措施思想汇报
2014/10/12 职场文书
2014年优秀班主任工作总结
2014/12/16 职场文书
贷款工资证明范本
2015/06/12 职场文书
新人入职感言
2015/07/31 职场文书
python批量创建变量并赋值操作
2021/06/03 Python