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 jquery 实现新闻标签分类与无刷新分页
Dec 18 PHP
PHP多线程抓取网页实现代码
Jul 22 PHP
php安全配置 如何配置使其更安全
Dec 16 PHP
php获取ip的三个属性区别介绍(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
Sep 23 PHP
探讨:使用XMLSerialize 序列化与反序列化
Jun 08 PHP
php字符编码转换之gb2312转为utf8
Oct 28 PHP
PHP生成器简单实例
May 13 PHP
10条php编程小技巧
Jul 07 PHP
让你的PHP7更快之Hugepage用法分析
May 31 PHP
php实现的XML操作(读取)封装类完整实例
Feb 23 PHP
THINKPHP截取中文字符串函数实例代码
Mar 20 PHP
如何通过Apache在本地配置多个虚拟主机
Jul 29 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 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
2012/03/07 PHP
ThinkPHP中的create方法与自动令牌验证实例教程
2014/08/22 PHP
PHP入门教程之会话控制技巧(cookie与session)
2016/09/11 PHP
自己整理的一个javascript日期处理函数
2010/10/16 Javascript
js获取多个tagname的节点数组
2013/09/22 Javascript
Javascript脚本实现静态网页加密实例代码
2013/11/05 Javascript
详解javascript事件绑定使用方法
2016/10/20 Javascript
WebPack基础知识详解
2017/01/16 Javascript
最常用的jQuery表单验证(简单)
2017/05/23 jQuery
推荐VSCode 上特别好用的 Vue 插件之vetur
2017/09/14 Javascript
jackson解析json字符串,首字母大写会自动转为小写的方法
2017/12/22 Javascript
vue+springboot前后端分离实现单点登录跨域问题解决方法
2018/01/30 Javascript
vue 自定义 select内置组件
2018/04/10 Javascript
jQuery实现简单的Ajax调用功能示例
2019/02/15 jQuery
详解js中let与var声明变量的区别
2020/04/05 Javascript
JavaScript 装逼指南(js另类写法)
2020/05/10 Javascript
使用JavaScript实现网页秒表功能(含开始、暂停、继续、重置功能)
2020/06/05 Javascript
如何在微信小程序中使用骨架屏的步骤
2020/06/12 Javascript
JavaScript实现动态生成表格
2020/08/02 Javascript
Python中的字符串查找操作方法总结
2016/06/27 Python
python条件变量之生产者与消费者操作实例分析
2017/03/22 Python
详解Python中如何写控制台进度条的整理
2018/03/07 Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
2019/04/18 Python
Python整数对象实现原理详解
2019/07/01 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
2019/08/26 Python
使用django和vue进行数据交互的方法步骤
2019/11/11 Python
使用python客户端访问impala的操作方式
2020/03/28 Python
pyecharts动态轨迹图的实现示例
2020/04/17 Python
websocket+sockjs+stompjs详解及实例代码
2018/11/30 HTML / CSS
浅析canvas元素的html尺寸和css尺寸对元素视觉的影响
2019/07/22 HTML / CSS
瑞贝卡·泰勒官方网站:Rebecca Taylor
2016/09/24 全球购物
员工培训心得体会
2013/12/30 职场文书
2019年年中工作总结讲话稿模板
2019/03/25 职场文书
JS新手入门数组处理的实用方法汇总
2021/04/07 Javascript
能用CSS实现的就不要麻烦JavaScript了
2021/10/05 HTML / CSS
MySQL数据库Innodb 引擎实现mvcc锁
2022/05/06 MySQL