PHP 定界符 使用技巧


Posted in PHP onJune 14, 2009

如果用传统的输出方法——按字符串输出的话,肯定要有大量的转义符来对字符串中的引号等特殊字符进行转义,以免出现语法错误。如果是一两处还可以容忍,但是要是一个完整的html文本或者是一个200行的js我想是谁都会崩溃的。这就是PHP为什么要引入一个定界符的原因——至少一大部分原因是这样的。
1.PHP定界符的作用就是按照原样,包括换行格式什么的,输出在其内部的东西;
2.在PHP定界符中的任何特殊字符都不需要转义;
3.PHP定界符中的PHP变量会被正常的用其值来替换。
PHP中的定界符格式是这样的:

<<<Eof 
…… 
Eof;

看起来很简单,但是其中有许多地方需要注意。
首先在<<<之后的字符Eof是自己定义的,随便什么都是可以的(比如AAA都可以),但是结尾处的字符一定要和他一样,他们是成对出现的,就像{}这样的——这是最基本的。
在PHP定界符使用的过程中,第二个需要注意的问题——也是最经常出现问题的地方:
结尾的一行(如上例的Eof;),一定要另起一行,并且改行除了Eof;这个定界符结尾标识之外不能有任何其他字符,前后都不能有,包括空格。如果在本行最前或者最后出现空格,制表符的话,你会收到一个这样的错误信息:
Parse error: parse error, unexpected $end in……,提示你语法错误;
第三个需要注意的是,如果在定界符中间出现有PHP的变量,你只需要像在其它字符串中输出一样写就行了,例如
<<<Eof 
hello{$name} 
Eof;

变量$name之所以要用{}括起来是要告诉PHP解析器这是一个PHP变量,其实不用也是可以的,但是有可能会产生歧义,例如你的变量后面刚好不是一字母或者特殊符号什么的会怎么样呢?千万不能有这样的写法
<<<Eof 
hello<?php echo $name?> 
Eof;

这样的情况,你同样会收到一个语法错误的信息。先便是一个战地测试过的PHP定界符的正确写法。里面包含了,html和javascript的代码:
<?php 
$name = 'kitty'; 
echo <<<Eof 
<table height="20"> 
<tr><td> 
{$name}<br/> 
<script> 
var p='hello world'; 
document.writeln(p); 
</script> 
</td></tr> 
</table> 
Eof; 
?>
PHP 相关文章推荐
关于session在PHP5的配置文件中的详细设置参数说明
Apr 20 PHP
无需重新编译php加入ftp扩展的解决方法
Feb 07 PHP
强烈声明: 不要使用(include/require)_once
Jun 06 PHP
使用cookie实现统计访问者登陆次数
Jun 08 PHP
Laravel 5 框架入门(二)构建 Pages 的管理功能
Apr 09 PHP
PHP使用递归生成文章树
Apr 21 PHP
PHP开发Apache服务器配置
Jul 15 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
Jul 31 PHP
symfony2.4的twig中date用法分析
Mar 18 PHP
php生成Android客户端扫描可登录的二维码
May 13 PHP
mysql查找删除重复数据并只保留一条实例详解
Sep 24 PHP
thinkphp5 加载静态资源路径与常量的方法
Dec 24 PHP
php 变量定义方法
Jun 14 #PHP
PHP 函数语法介绍一
Jun 14 #PHP
PHP 木马攻击防御技巧
Jun 13 #PHP
C# Assembly类访问程序集信息
Jun 13 #PHP
php adodb连接mssql解决乱码问题
Jun 12 #PHP
php array_map array_multisort 高效处理多维数组排序
Jun 11 #PHP
php MsSql server时遇到的中文编码问题
Jun 11 #PHP
You might like
使用MaxMind 根据IP地址对访问者定位
2006/10/09 PHP
qTip 基于JQuery的Tooltip插件[兼容性好]
2010/09/01 Javascript
基于Jquery实现表格动态分页实现代码
2011/06/21 Javascript
JavaScript高级程序设计 阅读笔记(十七) js事件
2012/08/14 Javascript
一个CSS+jQuery实现的放大缩小动画效果
2014/02/19 Javascript
使用Jquery获取带特殊符号的ID 标签的方法
2014/04/30 Javascript
javascript实现行拖动的方法
2015/05/27 Javascript
DOM操作和jQuery实现选项移动操作的简单实例
2016/06/07 Javascript
Vue2.0系列之过滤器的使用
2018/03/01 Javascript
基于JS实现带动画效果的流程进度条
2018/06/01 Javascript
node.js基于socket.io快速实现一个实时通讯应用
2019/04/23 Javascript
JavaScript实现省份城市的三级联动
2020/02/11 Javascript
jQuery 选择器用法实例分析【prev + next】
2020/05/22 jQuery
[02:10]三分钟回顾完美世界城市挑战赛
2019/01/24 DOTA
python生成excel的实例代码
2017/11/08 Python
PyQt5每天必学之QSplitter实现窗口分隔
2018/04/19 Python
解决nohup执行python程序log文件写入不及时的问题
2019/01/14 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
2019/06/17 Python
python 并发下载器实现方法示例
2019/11/22 Python
Django3.0 异步通信初体验(小结)
2019/12/04 Python
HTML5自定义元素播放焦点图动画的实现
2019/09/25 HTML / CSS
麦德龙官方海外旗舰店:德国麦德龙超市
2017/12/23 全球购物
有模特经验的简历自我评价
2013/09/19 职场文书
出纳岗位职责模板
2013/11/27 职场文书
大学生入党思想汇报
2014/01/14 职场文书
迟到早退检讨书
2014/02/10 职场文书
研究生考核个人自我鉴定
2014/03/27 职场文书
秋天的怀念教学反思
2014/04/28 职场文书
岗位职责说明书
2014/05/07 职场文书
廉政教育的心得体会
2014/09/01 职场文书
司法局群众路线教育实践活动整改措施思想汇报
2014/10/13 职场文书
捐书活动倡议书
2015/04/27 职场文书
书法社团活动总结
2015/05/07 职场文书
六一亲子活动感想
2015/08/07 职场文书
李清照的诗词赏析(20首)
2019/08/22 职场文书
JavaWeb Servlet开发注册页面实例
2022/04/11 Java/Android