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 相关文章推荐
用ADODB来让PHP操作ACCESS数据库的方法
Dec 31 PHP
CodeIgniter php mvc框架 中国网站
May 26 PHP
火车采集器 免费版使出收费版本功能实现原理
Sep 17 PHP
PHP 日志缩略名的创建函数代码
May 26 PHP
smarty模板引擎从php中获取数据的方法
Jan 22 PHP
php使用gzip压缩传输js和css文件的方法
Jul 29 PHP
PHP创建/删除/复制文件夹、文件
May 03 PHP
PHP数组函数知识汇总
May 12 PHP
详解PHP归并排序的实现
Oct 18 PHP
php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
Dec 07 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
Oct 08 PHP
在 PHP 和 Laravel 中使用 Traits的方法
Nov 13 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批量删除数据
2007/01/18 PHP
php获得当前的脚本网址
2007/12/10 PHP
thinkPHP中U方法加密传递参数功能示例
2018/05/29 PHP
不同浏览器对回车提交表单的处理办法
2010/02/13 Javascript
zeroclipboard复制到剪切板的flash
2010/08/04 Javascript
用循环或if语句从json中取数据示例
2014/08/18 Javascript
javascript简单实现类似QQ头像弹出效果的方法
2015/08/03 Javascript
解决angular的post请求后SpringMVC后台接收不到参数值问题的方法
2015/12/10 Javascript
jQuery的框架介绍
2016/05/11 Javascript
jQuery实现按比例缩放图片的方法
2017/04/29 jQuery
bootstrap+jquery项目引入文件报错的解决方法
2018/01/22 jQuery
Android 自定义view仿微信相机单击拍照长按录视频按钮
2019/07/19 Javascript
JS数组方法push()、pop()用法实例分析
2020/01/18 Javascript
jquery制作的移动端购物车效果完整示例
2020/02/24 jQuery
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
vue cli3适配所有端方案的实现
2020/04/13 Javascript
Vue两种组件类型:递归组件和动态组件的用法
2020/08/06 Javascript
python获取豆瓣电影简介代码分享
2014/01/16 Python
跟老齐学Python之不要红头文件(2)
2014/09/28 Python
python+selenium识别验证码并登录的示例代码
2017/12/21 Python
Python lambda函数基本用法实例分析
2018/03/16 Python
Python使用Phantomjs截屏网页的方法
2018/05/17 Python
Python 限制线程的最大数量的方法(Semaphore)
2019/02/22 Python
python3.6下Numpy库下载与安装图文教程
2019/04/02 Python
详解python实现数据归一化处理的方式:(0,1)标准化
2019/07/17 Python
详解HTML5 data-* 自定义属性
2018/01/24 HTML / CSS
英国二手iPhone、音乐、电影和游戏商店:musicMagpie
2018/10/26 全球购物
现代绅士日常奢侈品:Todd Snyder
2019/12/13 全球购物
如何开发安全的AJAX应用
2014/03/26 面试题
ktv中秋节活动方案
2014/01/30 职场文书
2014年安全生产大检查方案
2014/05/13 职场文书
出差报告怎么写
2014/11/06 职场文书
仓管员岗位职责
2015/02/03 职场文书
2015年度保密工作总结
2015/04/24 职场文书
省级三好学生主要事迹材料
2015/11/03 职场文书
Java十分钟精通进阶适配器模式
2022/04/06 Java/Android