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通用分页类page.php[仿google分页]
Aug 31 PHP
PHP中改变图片的尺寸大小的代码
Jul 17 PHP
PHP MySQL应用中使用XOR运算加密算法分享
Aug 28 PHP
一个PHP的QRcode类与大家分享
Nov 13 PHP
基于PHP+Ajax实现表单验证的详解
Jun 25 PHP
PHP添加Xdebug扩展的方法
Feb 12 PHP
php定义数组和使用示例(php数组的定义方法)
Mar 29 PHP
PHP实现抓取Google IP并自动修改hosts文件
Feb 12 PHP
PHP中SSO Cookie登录分析和实现
Nov 06 PHP
php is_executable判断给定文件名是否可执行实例
Sep 26 PHP
thinkPHP5.0框架命名空间详解
Mar 18 PHP
Laravel框架数据库迁移操作实例详解
Apr 06 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
一个简单的自动发送邮件系统(一)
2006/10/09 PHP
基于mysql的论坛(1)
2006/10/09 PHP
处理单名多值表单的详解
2013/06/08 PHP
深入解析PHP中逗号与点号的区别
2013/08/05 PHP
PHP利用str_replace防注入的方法
2013/11/10 PHP
php分页函数示例代码分享
2014/02/24 PHP
PHP实现将textarea的值根据回车换行拆分至数组
2015/06/10 PHP
php+ajax+json 详解及实例代码
2016/12/12 PHP
javascript 解析url的search方法
2010/02/09 Javascript
关于jQuery中的end()使用方法
2011/07/10 Javascript
js获取网页可见区域、正文以及屏幕分辨率的高度
2014/05/15 Javascript
JavaScript lastIndexOf方法入门实例(计算指定字符在字符串中最后一次出现的位置)
2014/10/17 Javascript
JavaScript字符集编码与解码详谈
2017/02/02 Javascript
JavaScript登录记住密码操作(超简单代码)
2017/03/22 Javascript
Vue框架中正确引入JS库的方法介绍
2017/07/30 Javascript
Iphone手机、安卓手机浏览器控制默认缩放大小的方法总结(附代码)
2017/08/18 Javascript
js es6系列教程 - 新的类语法实战选项卡(详解)
2017/09/02 Javascript
vue cli升级webapck4总结
2018/04/04 Javascript
使用 vue 实现灭霸打响指英雄消失的效果附demo
2019/05/06 Javascript
跟老齐学Python之永远强大的函数
2014/09/14 Python
使用Python读取安卓手机的屏幕分辨率方法
2018/03/31 Python
对pytorch网络层结构的数组化详解
2018/12/08 Python
解决新版Pycharm中Matplotlib图像不在弹出独立的显示窗口问题
2019/01/15 Python
对pandas处理json数据的方法详解
2019/02/08 Python
python如果快速判断数字奇数偶数
2019/11/13 Python
python计算波峰波谷值的方法(极值点)
2020/02/18 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
2021/01/21 Python
巴西最大的珠宝连锁店:Vivara
2019/04/18 全球购物
Dr. Martens马汀博士德国官网:马丁靴鼻祖
2019/12/26 全球购物
员工安全生产责任书
2014/07/22 职场文书
四风对照检查材料思想汇报
2014/09/20 职场文书
小学班主任事迹材料
2014/12/17 职场文书
单位接收函范文
2015/01/30 职场文书
音乐之声观后感
2015/06/04 职场文书
商务信函英语问候语
2015/11/10 职场文书
Win11局域网共享权限在哪里设置? Win11高级共享的设置技巧
2022/04/05 数码科技