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分页实例代码分享
Jul 28 PHP
使用PHPMyAdmin修复论坛数据库的图文方法
Jan 09 PHP
从PHP $_SERVER相关参数判断是否支持Rewrite模块
Sep 26 PHP
php获取目录所有文件并将结果保存到数组(实例)
Oct 25 PHP
PHP反射类ReflectionClass和ReflectionObject的使用方法
Nov 13 PHP
PHP动态页生成静态页的3种常用方法
Nov 13 PHP
php实现监控varnish缓存服务器的状态
Dec 30 PHP
PHP生成指定随机字符串的简单实现方法
Apr 01 PHP
PHP数据库表操作的封装类及用法实例详解
Jul 12 PHP
php处理多图上传压缩代码功能
Jun 13 PHP
在Laravel中使用MongoDB的方法示例
Nov 11 PHP
laravel框架select2多选插件初始化默认选中项操作示例
Feb 18 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
人尽可用的Windows技巧小贴士之下篇
2007/03/22 PHP
PHP求最大子序列和的算法实现
2011/06/24 PHP
PHP5 的对象赋值机制介绍
2011/08/02 PHP
ThinkPHP应用模式扩展详解
2014/07/16 PHP
PHPUnit安装及使用示例
2014/10/29 PHP
thinkphp autoload 命名空间自定义 namespace
2015/07/17 PHP
实例讲解yii2.0在php命令行中运行的步骤
2015/12/01 PHP
php生成word并下载代码实例
2019/03/15 PHP
Javascript 继承机制实例
2009/08/12 Javascript
为jquery.ui.dialog 增加“在当前鼠标位置打开”的功能
2009/11/24 Javascript
jquery插件制作 图片走廊 gallery
2012/08/17 Javascript
jqGrid随窗口大小变化自适应大小的示例代码
2013/12/28 Javascript
JavaScript实现Java中StringBuffer的方法
2015/02/09 Javascript
非常漂亮的相册集 使用jquery制作相册集
2016/04/28 Javascript
JavaScript操作选择对象的简单实例
2016/05/16 Javascript
jQuery实现拖拽可编辑模块功能代码
2017/01/12 Javascript
基于jQuery实现简单人工智能聊天室
2017/02/10 Javascript
Vue input控件通过value绑定动态属性及修饰符的方法
2017/05/03 Javascript
老生常谈javascript的面向对象思想
2017/08/22 Javascript
nodejs中用npm初始化来创建package.json的实例讲解
2018/10/10 NodeJs
详解小程序不同页面之间通讯的解决方案
2018/11/23 Javascript
小程序rich-text组件如何改变内部img图片样式的方法
2019/05/22 Javascript
JS数组扁平化、去重、排序操作实例详解
2020/02/24 Javascript
vue操作dom元素的3种方法示例
2020/09/20 Javascript
[02:30]DOTA2放量测试专访海涛:呼吁保护新手玩家
2013/08/26 DOTA
django用户登录和注销的实现方法
2018/07/16 Python
Python 给屏幕打印信息加上颜色的实现方法
2019/04/24 Python
Python进阶之使用selenium爬取淘宝商品信息功能示例
2019/09/16 Python
Python ORM编程基础示例
2020/02/02 Python
Foreo国际站:Foreo International
2018/10/29 全球购物
技校个人求职信范文
2014/01/25 职场文书
《云房子》教学反思
2014/04/20 职场文书
生物学专业求职信
2014/07/23 职场文书
授权委托书
2014/07/31 职场文书
群众路线学习心得体会范文
2014/11/05 职场文书
会计试用期自我评价
2015/03/10 职场文书