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+mysql来做一个功能强大的在线计算器
Oct 12 PHP
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
Sep 07 PHP
基于PHP读取csv文件内容的详解
Jun 18 PHP
实用的简单PHP分页集合包括使用方法
Oct 21 PHP
PHP多文件上传类实例
Mar 07 PHP
PHP正则验证Email的方法
Jun 15 PHP
以文件形式缓存php变量的方法
Jun 26 PHP
PHP实现补齐关闭的HTML标签
Mar 22 PHP
php 使用html5实现多文件上传实例
Oct 24 PHP
php+resumablejs实现的分块上传 断点续传功能示例
Apr 18 PHP
Laravel中服务提供者和门面模式的入门介绍
Nov 06 PHP
实例讲解PHP表单处理
Feb 15 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小偷的核心程序
2007/04/09 PHP
php二分法在IP地址查询中的应用
2008/08/12 PHP
PHPThumb PHP 图片缩略图库
2012/03/11 PHP
ThinkPHP模板Switch标签用法示例
2014/06/30 PHP
php 类自动载入的方法
2015/06/03 PHP
在Windows系统下使用PHP生成Word文档的教程
2015/07/03 PHP
PHP设计模式之迭代器模式
2016/06/17 PHP
Yii2实现ActiveForm ajax提交
2017/05/26 PHP
用JAVASCRIPT如何给&amp;lt;textarea&amp;gt;&amp;lt;/textarea&amp;gt;赋值
2007/04/20 Javascript
js取模(求余数)隔行变色
2014/05/15 Javascript
Javascript技术栈中的四种依赖注入小结
2016/02/27 Javascript
喜大普奔!jQuery发布 3.0 最终版
2016/06/12 Javascript
Vue实现左右菜单联动实现代码
2018/08/12 Javascript
教你完全理解ReentrantLock重入锁
2019/06/03 Javascript
JS实现动态添加外部js、css到head标签的方法
2019/06/05 Javascript
HTML+JavaScript实现扫雷小游戏
2019/09/30 Javascript
解决vuecli3中img src 的引入问题
2020/08/04 Javascript
Vue实现菜单切换功能
2020/11/08 Javascript
盘点提高 Python 代码效率的方法
2014/07/03 Python
一个基于flask的web应用诞生(1)
2017/04/11 Python
Pandas读写CSV文件的方法示例
2019/03/27 Python
详解用pyecharts Geo实现动态数据热力图城市找不到问题解决
2019/06/26 Python
Django上线部署之IIS的配置方法
2019/08/22 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
2020/02/06 Python
Python关于__name__属性的含义和作用详解
2020/02/19 Python
Python实现屏幕录制功能的代码
2020/03/02 Python
使用keras实现densenet和Xception的模型融合
2020/05/23 Python
Django Auth用户认证组件实现代码
2020/10/13 Python
python性能测试工具locust的使用
2020/12/28 Python
知识竞赛主持词
2014/03/26 职场文书
日化店促销方案
2014/03/26 职场文书
销售人才自我评价范文
2014/09/27 职场文书
计算机实训报告范文
2014/11/05 职场文书
首次购房证明
2015/06/19 职场文书
工作简报怎么写
2015/07/21 职场文书
python 批量压缩图片的脚本
2021/06/02 Python