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 XML备份Mysql数据库
May 27 PHP
wordpress自定义url参数实现路由功能的代码示例
Nov 28 PHP
ThinkPHP提交表单时默认自动转义的解决方法
Nov 25 PHP
php动态生成版权所有信息的方法
Mar 24 PHP
php计算一个文件大小的方法
Mar 30 PHP
php将html转成wml的WAP标记语言实例
Jul 08 PHP
Zend Framework实现具有基本功能的留言本(附demo源码下载)
Mar 22 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
May 13 PHP
Laravel中encrypt和decrypt的实现方法
Sep 24 PHP
PHP实现根据数组某个键值大小进行排序的方法
Mar 13 PHP
让Laravel API永远返回JSON格式响应的方法示例
Sep 05 PHP
PHP常用函数之格式化时间操作示例
Oct 21 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
通过文字传递创建的图形按钮
2006/10/09 PHP
基于MySQL体系结构的分析
2013/05/02 PHP
php显示页码分页类的封装
2017/06/08 PHP
laravel5.6实现数值转换
2019/10/23 PHP
DEFER怎么用?
2006/07/01 Javascript
jquery中的mouseleave和mouseout的区别 模仿下拉框效果
2012/02/07 Javascript
jquery $.ajax相关用法分享
2012/03/16 Javascript
javascript中encodeURI和decodeURI方法使用介绍
2013/05/06 Javascript
json格式的时间显示为正常年月日的方法
2013/09/08 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
2015/10/12 Javascript
jquery动态增加删减表格行特效
2015/11/20 Javascript
不同js异步函数同步的实现方法
2016/05/28 Javascript
JavaScript利用闭包实现模块化
2017/01/13 Javascript
详解JS中的立即执行函数
2017/02/24 Javascript
详解angularJs指令的3种绑定策略
2017/04/13 Javascript
Angular2的管道Pipe的使用方法
2017/11/07 Javascript
浏览器调试动态js脚本的方法(图解)
2018/01/19 Javascript
Vue记住滚动条和实现下拉加载的完美方法
2020/07/31 Javascript
python 字符串和整数的转换方法
2018/06/25 Python
python 字符串只保留汉字的方法
2018/11/16 Python
Python 200行代码实现一个滑动验证码过程详解
2019/07/11 Python
Python 日志logging模块用法简单示例
2019/10/18 Python
Python 读取 YUV(NV12) 视频文件实例
2019/12/09 Python
django使用graphql的实例
2020/09/02 Python
解决pip安装的第三方包在PyCharm无法导入的问题
2020/10/15 Python
windeln官方海外旗舰店:德淘超人气母婴超市
2017/12/15 全球购物
解释DataSet(ds) 和 ds as DataSet 的含义
2014/07/27 面试题
品学兼优的大学生自我评价
2013/09/20 职场文书
农村改厕实施方案
2014/03/22 职场文书
本科毕业生自荐信
2014/06/02 职场文书
研究生求职自荐书
2014/06/23 职场文书
民族团结演讲稿范文
2014/08/27 职场文书
硕士论文致谢范文
2015/05/14 职场文书
《中华上下五千年》读后感3篇
2019/11/29 职场文书
利用ajax+php实现商品价格计算
2021/03/31 PHP
MySQL 四种连接和多表查询详解
2021/07/16 MySQL