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 self,$this,const,static,-&amp;gt;的使用
Oct 22 PHP
ionCube 一款类似zend的PHP加密/解密工具
Jul 25 PHP
php 安全过滤函数代码
May 07 PHP
解析在PHP中使用mysqli扩展库对mysql的操作
Jul 03 PHP
php构造函数实例讲解
Nov 13 PHP
php+mysql实现数据库随机重排实例
Oct 17 PHP
PHP使用array_merge重新排列数组下标的方法
Jul 22 PHP
常见的四种POST 提交数据方式(小总结)
Oct 08 PHP
Zend Framework框架Smarty扩展实现方法
Mar 22 PHP
php中mkdir()函数的权限问题分析
Sep 24 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
Nov 12 PHP
PHP实现简易用户登录系统
Jul 10 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提示Notice: Undefined variable的解决办法
2012/11/24 PHP
php实现下载限制速度示例分享
2014/02/13 PHP
php  单例模式详细介绍及实现源码
2016/11/05 PHP
PHP二维数组去重算法
2016/12/17 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
laravel-admin 后台表格筛选设置默认的查询日期方法
2019/10/03 PHP
地址栏上的一段语句,改变页面的风格。(教程)
2008/04/02 Javascript
JQuery从头学起第三讲
2010/07/06 Javascript
Redis基本知识、安装、部署、配置笔记
2015/03/05 Javascript
Bootstrap每天必学之面板
2015/11/30 Javascript
关于安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法
2016/05/17 Javascript
Bootstrap开关(switch)控件学习笔记分享
2016/05/30 Javascript
javascript中replace使用方法总结
2017/03/01 Javascript
javascript input输入框模糊提示功能的实现
2017/09/25 Javascript
jquery鼠标悬停导航下划线滑出效果
2017/09/29 jQuery
[44:39]2014 DOTA2国际邀请赛中国区预选赛 NE VS CNB
2014/05/21 DOTA
Python检测字符串中是否包含某字符集合中的字符
2015/05/21 Python
Python排序搜索基本算法之插入排序实例分析
2017/12/11 Python
使用Python制作自动推送微信消息提醒的备忘录功能
2018/09/06 Python
Python mutiprocessing多线程池pool操作示例
2019/01/30 Python
如何利用Python开发一个简单的猜数字游戏
2019/09/22 Python
python程序输出无内容的解决方式
2020/04/09 Python
在tensorflow以及keras安装目录查询操作(windows下)
2020/06/19 Python
Django-silk性能测试工具安装及使用解析
2020/11/28 Python
阿迪达斯墨西哥官方网站:adidas墨西哥
2017/11/03 全球购物
您熟悉ORM(Object-Relation Mapping)吗?请谈谈您所理解的ORM
2016/02/08 面试题
什么是Rollback Segment
2013/04/22 面试题
教师评优事迹材料
2014/01/10 职场文书
房屋租赁意向书
2014/04/01 职场文书
青安岗事迹材料
2014/05/14 职场文书
大学同学会活动方案
2014/08/20 职场文书
同志主要表现材料
2014/08/21 职场文书
七一讲话心得体会
2014/09/05 职场文书
综合管理员岗位职责
2015/02/11 职场文书
创业计划书之情侣餐厅
2019/09/29 职场文书
MySQL InnoDB ReplicaSet(副本集)简单介绍
2021/04/24 MySQL