解析php中heredoc的使用方法


Posted in PHP onJune 17, 2013

Heredoc技术,在正规的PHP文档中和技术书籍中一般没有详细讲述,只是提到了这是一种Perl风格的字符串输出技术。但是现在的一些论坛程 序,和部分文章系统,都巧妙的使用heredoc技术,来部分的实现了界面与代码的准分离,phpwind模板就是一个典型的例子。

如下:

<?php
$name = '浅水游';
print <<<EOT
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>Untitled Document</title>
</head>
<body>
<!--12321-->
Hello,$name!
</body>
</html>
EOT;
?>

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();
PHP 相关文章推荐
PHP与MySQL交互使用详解
Oct 09 PHP
计数器详细设计
Oct 09 PHP
php escape URL编码
Dec 10 PHP
晋城吧对DiscuzX进行的前端优化要点
Sep 05 PHP
php 安全过滤函数代码
May 07 PHP
mac环境中使用brew安装php5.5.15
Aug 18 PHP
php实现模拟post请求用法实例
Jul 11 PHP
PHP加密解密函数详解
Oct 28 PHP
php使用get_class_methods()函数获取分类的方法
Jul 20 PHP
利用PHP_XLSXWriter代替PHPExcel的方法示例
Jul 16 PHP
PHP守护进程化在C和PHP环境下的实现
Nov 21 PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
Feb 25 PHP
深入PHP5中的魔术方法详解
Jun 17 #PHP
php.ini 配置文件的深入解析
Jun 17 #PHP
解析posix与perl标准的正则表达式区别
Jun 17 #PHP
Session服务器配置指南与使用经验的深入解析
Jun 17 #PHP
解析php中session的实现原理以及大网站应用应注意的问题
Jun 17 #PHP
CodeIgniter图像处理类的深入解析
Jun 17 #PHP
jQuery+php实现ajax文件即时上传的详解
Jun 17 #PHP
You might like
Protoss建筑一览
2020/03/14 星际争霸
php5 and xml示例
2006/11/22 PHP
浏览器关闭后,能继续执行的php函数(ignore_user_abort)
2012/08/01 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
2014/09/24 PHP
php中Snoopy类用法实例
2015/06/19 PHP
joomla组件开发入门教程
2016/05/04 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
jQuery 源代码显示控件 (Ajax加载方式).
2009/05/18 Javascript
jquery制作漂亮的弹出层提示消息特效
2014/12/23 Javascript
JS实现可关闭的对联广告效果代码
2015/09/14 Javascript
JSON对象 详解及实例代码
2016/10/18 Javascript
JavaScript判断浏览器及其版本信息
2017/01/20 Javascript
JS如何实现在页面上快速定位(锚点跳转问题)
2017/08/14 Javascript
微信小程序自定义toast组件的方法详解【含动画】
2019/05/11 Javascript
解决ant design vue中树形控件defaultExpandAll设置无效的问题
2020/10/26 Javascript
[08:44]和酒神一起战斗 DOTA2教你做大人
2014/03/27 DOTA
[46:23]完美世界DOTA2联赛PWL S2 FTD vs Magma 第一场 11.20
2020/11/23 DOTA
用python找出那些被“标记”的照片
2017/04/20 Python
对python数据切割归并算法的实例讲解
2018/12/12 Python
使用Python批量修改文件名的代码实例
2019/01/24 Python
理想高通滤波实现Python opencv示例
2019/01/30 Python
Python的UTC时间转换讲解
2019/02/26 Python
python实现屏保程序(适用于背单词)
2019/07/30 Python
pytest中文文档之编写断言
2019/09/12 Python
python实现代码统计程序
2019/09/19 Python
Europcar美国/加拿大:预订汽车或卡车租赁服务
2018/11/13 全球购物
解释一下ruby中的特殊方法与特殊类
2013/02/26 面试题
领导干部作风整顿个人剖析材料
2014/10/11 职场文书
信息简报范文
2015/07/21 职场文书
Django debug为True时,css加载失败的解决方案
2021/04/24 Python
SpringCloud之@FeignClient()注解的使用方式
2021/09/25 Java/Android
victoriaMetrics库布隆过滤器初始化及使用详解
2022/04/05 Golang
Linux下使用C语言代码搭建一个简单的HTTP服务器
2022/04/13 Servers
Java 死锁解决方案
2022/05/11 Java/Android
Nginx 502 bad gateway错误解决的九种方案及原因
2022/08/14 Servers