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(视频)Http下载
Dec 12 PHP
PHP Parse Error: syntax error, unexpected $end 错误的解决办法
Jun 05 PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
Jun 13 PHP
浅析php面向对象public private protected 访问修饰符
Jun 30 PHP
PHP命令行脚本接收传入参数的三种方式
Aug 20 PHP
php生成二维码时出现中文乱码的解决方法
Dec 18 PHP
又拍云异步上传实例教程详解
Apr 19 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
Jun 22 PHP
php版微信js-sdk支付接口类用法示例
Oct 12 PHP
在php7中MongoDB实现模糊查询的方法详解
May 03 PHP
php中html_entity_decode实现HTML实体转义
Jun 13 PHP
PHP基于进程控制函数实现多线程
Dec 09 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 第二节 数据类型之转换
2012/04/28 PHP
Zend的MVC机制使用分析(二)
2013/05/02 PHP
ThinkPHP使用心得分享-上传类UploadFile的使用
2014/05/15 PHP
php运行时动态创建函数的方法
2015/03/16 PHP
php实现数组按指定KEY排序的方法
2015/03/30 PHP
PHP无限极分类函数的实现方法详解
2017/04/15 PHP
YII框架学习笔记之命名空间、操作响应与视图操作示例
2019/04/30 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
2019/05/09 PHP
JQuery实现鼠标滑过显示导航下拉列表
2013/09/12 Javascript
多个jQuery版本共存的处理方案
2015/03/17 Javascript
基于jquery实现可定制的web在线富文本编辑器附源码下载
2015/11/17 Javascript
基于javascript实现仿百度输入框自动匹配功能
2016/01/03 Javascript
深入理解React中何时使用箭头函数
2017/08/23 Javascript
详解react-router 4.0 下服务器如何配合BrowserRouter
2017/12/29 Javascript
微信小程序wepy框架笔记小结
2018/08/08 Javascript
vue项目实现图片上传功能
2019/12/23 Javascript
JS实现网页端猜数字小游戏
2020/03/06 Javascript
vue实现顶部菜单栏
2020/11/08 Javascript
Python自动生产表情包
2017/03/17 Python
python3使用requests模块爬取页面内容的实战演练
2017/09/25 Python
python数字图像处理之骨架提取与分水岭算法
2018/04/27 Python
解决Ubuntu pip 安装 mysql-python包出错的问题
2018/06/11 Python
Django 过滤器汇总及自定义过滤器使用详解
2019/07/19 Python
django认证系统实现自定义权限管理的方法
2019/08/28 Python
Python3视频转字符动画的实例代码
2019/08/29 Python
Flask项目中实现短信验证码和邮箱验证码功能
2019/12/05 Python
客服服务心得体会
2013/12/30 职场文书
幼儿园三八妇女节活动方案
2014/03/11 职场文书
经典婚礼主持词
2014/03/13 职场文书
租房协议书怎么写
2014/04/10 职场文书
代理协议书范本
2014/04/22 职场文书
爱我中华演讲稿
2014/05/20 职场文书
群众路线教育实践活动对照检查材料思想汇报(副处级领导)
2014/10/04 职场文书
纪委书记群众路线整改措施思想汇报
2014/10/09 职场文书
给校长的建议书作文400字
2015/09/14 职场文书
用 Python 定义 Schema 并生成 Parquet 文件详情
2021/09/25 Python