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 相关文章推荐
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
Apr 18 PHP
php流量统计功能的实现代码
Sep 29 PHP
jQuery+PHP+ajax实现微博加载更多内容列表功能
Jun 27 PHP
php实现转换ubb代码的方法
Jun 18 PHP
PHP多文件上传实例
Jul 09 PHP
深入浅析php中sprintf与printf函数的用法及区别
Jan 08 PHP
zen_cart实现支付前生成订单的方法
May 06 PHP
PHP实现bitmap位图排序与求交集的方法
Jul 28 PHP
thinkphp验证码的实现(form、ajax实现验证)
Jul 28 PHP
PHP判断当前使用的是什么浏览器(推荐)
Oct 27 PHP
php面向对象基础详解【星际争霸游戏案例】
Jan 23 PHP
Nginx+php配置文件及原理解析
Dec 09 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
Mysql的常用命令
2006/10/09 PHP
php使用websocket示例详解
2014/03/12 PHP
ThinkPHP分组下自定义标签库实例
2014/11/01 PHP
php中final关键字用法分析
2016/12/07 PHP
PHP array_reverse() 函数原理及实例解析
2020/07/14 PHP
jValidate 基于jQuery的表单验证插件
2009/12/12 Javascript
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
2012/01/15 Javascript
jquery如何实现在加载完iframe的内容后再进行操作
2013/09/10 Javascript
JavaScript实现随机替换图片的方法
2015/04/16 Javascript
js表格排序实例分析(支持int,float,date,string四种数据类型)
2015/05/06 Javascript
javascript事件冒泡实例分析
2015/05/13 Javascript
Node.js实现数据推送
2016/04/14 Javascript
JavaScript实现页面跳转的方式汇总
2016/05/16 Javascript
JS针对Array的各种操作汇总
2016/11/29 Javascript
Vue分页组件实例代码
2017/04/17 Javascript
three.js实现3D视野缩放效果
2017/11/16 Javascript
解决Jquery下拉框数据动态获取的问题
2018/01/25 jQuery
vue iview实现动态路由和权限验证功能
2018/04/17 Javascript
[16:27]DOTA2 HEROS教学视频教你分分钟做大人-艾欧
2014/06/11 DOTA
[01:31]完美与DOTA2历程
2014/07/31 DOTA
[02:12]2015国际邀请赛 SHOWOPEN
2015/08/05 DOTA
[53:43]VP vs NewBee Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
python多线程同步实例教程
2019/08/11 Python
python异常处理和日志处理方式
2019/12/24 Python
selenium 多窗口切换的实现(windows)
2020/01/18 Python
python3 自动打印出最新版本执行的mysql2redis实例
2020/04/09 Python
C++和python实现阿姆斯特朗数字查找实例代码
2020/12/07 Python
联想香港官方网站及网店:Lenovo香港
2018/04/13 全球购物
Linux中如何用命令创建目录
2016/12/02 面试题
如何从一个文件档案的尾端新增记录
2016/12/02 面试题
学院领导推荐信
2013/10/30 职场文书
教师实习自我鉴定
2013/12/11 职场文书
中学自我评价
2014/01/31 职场文书
幸福终点站观后感
2015/06/04 职场文书
儿子满月酒致辞
2015/07/29 职场文书
早上好问候语大全
2015/11/10 职场文书