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 相关文章推荐
PHP调用Twitter的RSS的实现代码
Mar 10 PHP
ThinkPHP的RBAC(基于角色权限控制)深入解析
Jun 17 PHP
php导入csv文件碰到乱码问题的解决方法
Feb 10 PHP
php通过ajax实现双击table修改内容
Apr 28 PHP
php计算两个整数的最大公约数常用算法小结
Mar 05 PHP
php实现给一张图片加上水印效果
Jan 02 PHP
php微信支付接口开发程序
Aug 02 PHP
PHP房贷计算器实例代码,等额本息,等额本金
Apr 01 PHP
PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能
May 31 PHP
php设计模式之观察者模式定义与用法经典示例
Sep 19 PHP
php计数排序算法的实现代码(附四个实例代码)
Mar 31 PHP
PHP ob缓存以及ob函数原理实例解析
Nov 13 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
php下过滤HTML代码的函数
2007/12/10 PHP
PHP中函数rand和mt_rand的区别比较
2012/12/26 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
2015/11/04 PHP
微信自定义菜单的创建/查询/取消php示例代码
2016/08/05 PHP
js获取单选按钮的数据
2006/11/27 Javascript
JavaScript DOM 添加事件
2009/02/14 Javascript
javascript自然分类法算法实现代码
2013/10/11 Javascript
jQuery实现的动态伸缩导航菜单实例
2015/05/07 Javascript
原生js实现模拟滚动条
2015/06/15 Javascript
jQuery实现的简洁下拉菜单导航效果代码
2015/08/26 Javascript
基于jQuery的checkbox全选问题分析
2016/11/18 Javascript
javascript如何用递归写一个简单的树形结构示例
2017/09/06 Javascript
浅谈vue-router2路由参数注意的问题
2017/11/08 Javascript
改变vue请求过来的数据中的某一项值的方法(详解)
2018/03/08 Javascript
详解CommonJS和ES6模块循环加载处理的区别
2018/12/26 Javascript
vue实现鼠标移过出现下拉二级菜单功能
2019/12/12 Javascript
使用rpclib进行Python网络编程时的注释问题
2015/05/06 Python
Python脚本实现12306火车票查询系统
2016/09/30 Python
Python命令行解析模块详解
2018/02/01 Python
Python爬取数据保存为Json格式的代码示例
2019/04/09 Python
python安装gdal的两种方法
2019/10/29 Python
Python内置加密模块用法解析
2019/11/25 Python
TENSORFLOW变量作用域(VARIABLE SCOPE)
2020/01/10 Python
python利用JMeter测试Tornado的多线程
2020/01/12 Python
python爬虫多次请求超时的几种重试方法(6种)
2020/12/01 Python
Perry Ellis官网:美国男士品味服装
2016/12/09 全球购物
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的
2015/07/24 面试题
党员个人思想汇报
2013/12/28 职场文书
高中生家长会演讲稿
2014/01/14 职场文书
会议活动邀请函
2014/01/27 职场文书
标准的毕业生自荐信
2014/04/20 职场文书
2014年教研活动总结范文
2014/04/26 职场文书
公安派出所所长四风问题个人对照检查材料
2014/10/04 职场文书
乡镇保密工作承诺书
2015/05/04 职场文书
党员干部学习心得体会
2016/01/23 职场文书
高一作文之乐趣
2019/11/21 职场文书