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下使用以下代码连接并测试
Apr 09 PHP
PHP中foreach循环中使用引用要注意的地方
Jan 02 PHP
PHP中Date()时间日期函数的使用方法小结
Apr 20 PHP
php 深入理解strtotime函数的使用详解
May 23 PHP
PHP执行SQL文件并将SQL文件导入到数据库
Sep 17 PHP
修改WordPress中文章编辑器的样式的方法详解
Dec 15 PHP
PHP目录操作实例总结
Sep 27 PHP
php中strlen和mb_strlen用法实例分析
Nov 12 PHP
PHP用continue跳过本次循环中剩余代码的注意点
Jun 27 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
Feb 06 PHP
thinkphp整合系列之极验滑动验证码geetest功能
Jun 18 PHP
PHP 构造函数和析构函数原理与用法分析
Apr 21 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
THINKPHP+JS实现缩放图片式截图的实现
2010/03/07 PHP
PHP-Fcgi下PHP的执行时间设置方法
2013/08/02 PHP
PHP实现读取一个1G的文件大小
2013/08/24 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
JavaScript 定义function的三种方式小结
2009/10/16 Javascript
基于jQuery的表格操作插件
2010/04/22 Javascript
关于jquery动态增减控件的一些想法和小插件
2010/08/01 Javascript
JS跨域总结
2012/08/30 Javascript
JS中 用户登录系统的解决办法
2013/04/15 Javascript
jQuery 淡出一个图像到另一个图像的实现代码
2013/06/12 Javascript
javascript实现避免页面按钮重复提交
2015/01/08 Javascript
JavaScript弹出新窗口后向父窗口输出内容的方法
2015/04/06 Javascript
jQuery使用animate创建动画用法实例
2015/08/07 Javascript
IE7浏览器窗口大小改变事件执行多次bug及IE6/IE7/IE8下resize问题
2015/08/21 Javascript
jquery之基本选择器practice(实例讲解)
2017/09/30 jQuery
jQuery读取本地的json文件(实例讲解)
2017/10/31 jQuery
vue或react项目生产环境去掉console.log的操作
2020/09/02 Javascript
python使用Queue在多个子进程间交换数据的方法
2015/04/18 Python
Python编程实现生成特定范围内不重复多个随机数的2种方法
2017/04/14 Python
Django开发中的日志输出的方法
2018/07/02 Python
jupyter notebook 中输出pyecharts图实例
2020/04/23 Python
python程序中的线程操作 concurrent模块使用详解
2019/09/23 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
2020/05/26 Python
python实现猜数游戏(保存游戏记录)
2020/06/22 Python
利用html5 canvas破解简单验证码及getImageData接口应用
2013/01/25 HTML / CSS
html5新增的属性和废除的属性简要概述
2013/02/20 HTML / CSS
捷克购买家具网站:JENA nábytek
2020/03/19 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2016/02/09 面试题
人力资源专业推荐信
2013/11/29 职场文书
2014组织生活会方案
2014/05/19 职场文书
学校校庆演讲稿
2014/05/22 职场文书
村班子对照检查材料
2014/08/18 职场文书
2014年银行个人工作总结
2014/12/05 职场文书
《吃水不忘挖井人》教学反思
2016/02/22 职场文书
大学生创业计划书常用模板
2019/08/07 职场文书
Sql Server之数据类型详解
2022/02/28 SQL Server