什么情况下可以不写PHP的闭合标签“?>”


Posted in PHP onAugust 28, 2014

在一些PHP项目里我们经常会看到有些PHP文件中的代码是只有开始标签,而没有结束标签的,那么什么情况下可以不写这个结束标签,而什么情况下又必须写?

对此我们先来看2个例子:

下面的代码可以正常运行:

<?php
  echo 123456;

下面的代码会报错:

<?php
  echo 123456;
  <p>abc</p>

原因分析:
前者是纯php代码,可以不写结束标签,也不推荐写结束标签;后者除了php代码,还有html代码,必须要写结束标签。
 
那么为什么不推荐前者写结束标签呢?
因为在不写php结束标签时,默认从开始标签往后都是php代码,如果有其他代码,那就会报错。php只能运行在php标签里面的脚本,在脚本之外的所有字符,包括你看不见的空格或者回车,制表符号,都是作为输出内容会response到客户端的,这样就有可能会产生意想不到的事情。例如文件里面使用了header函数,这个文件同时又包含了另外一个文件,并且被包含的文件的php标签外有空字符,这个时候会报header already send的错误。我们查看一些网页的源代码看到的开头部分有很多空格和换行,就是因为这个原因导致的。

解决方案建议:

库文件、或者一些class文件等只有纯php代码的文件不推荐加结束标签

相信本文所述对大家的PHP程序设计有一定的参考价值。

PHP 相关文章推荐
怎样在PHP中通过ADO调用Asscess数据库和COM程序
Oct 09 PHP
傻瓜化配置PHP环境――Appserv
Dec 13 PHP
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
Sep 19 PHP
php实现zip压缩文件解压缩代码分享(简单易懂)
May 10 PHP
PHP使用get_headers函数判断远程文件是否存在的方法
Nov 28 PHP
Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法
Oct 08 PHP
php array_udiff_assoc 计算两个数组的差集实例
Nov 12 PHP
Zend Framework入门教程之Zend_Config组件用法详解
Dec 09 PHP
Laravel给生产环境添加监听事件(SQL日志监听)
Jun 19 PHP
PHP中的Iterator迭代对象属性详解
Apr 12 PHP
laravel解决迁移文件一次删除创建字段报错的问题
Oct 24 PHP
PHPstorm激活码2020年5月13日亲测有效
Sep 17 PHP
PHP防盗链代码实例
Aug 27 #PHP
如何让搜索引擎抓取AJAX内容解决方案
Aug 25 #PHP
使用php方法curl抓取AJAX异步内容思路分析及代码分享
Aug 25 #PHP
简单分析ucenter 会员同步登录通信原理
Aug 25 #PHP
ThinkPHP调用common/common.php函数提示错误function undefined的解决方法
Aug 25 #PHP
ThinkPHP查询返回简单字段数组的方法
Aug 25 #PHP
php防止伪造数据从地址栏URL提交的方法
Aug 24 #PHP
You might like
浅谈htmlentities 、htmlspecialchars、addslashes的使用方法
2016/12/09 PHP
php扩展开发入门demo示例
2019/09/23 PHP
Jquery实战_读书笔记1—选择jQuery
2010/01/22 Javascript
jQuery插件实现屏蔽单个元素使用户无法点击
2013/04/12 Javascript
js中 关于undefined和null的区别介绍
2013/04/16 Javascript
JS中的构造函数详细解析
2014/03/10 Javascript
CSS图片响应式 垂直水平居中
2015/08/14 Javascript
浅谈javascript的Touch事件
2015/09/27 Javascript
基于Jquery代码实现手风琴菜单
2015/11/19 Javascript
jquery解析json格式数据的方法(对象、字符串)
2015/11/24 Javascript
JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
2016/02/26 Javascript
简单讲解jQuery中的子元素过滤选择器
2016/04/18 Javascript
Postman模拟发送带token的请求方法
2018/03/31 Javascript
小程序实现发表评论功能
2018/07/06 Javascript
vue中Axios的封装与API接口的管理详解
2018/08/09 Javascript
微信头像地址失效踩坑记附带解决方案
2019/09/23 Javascript
JS画布动态实现黑客帝国背景效果
2020/11/08 Javascript
JavaScript中layim之整合右键菜单的示例代码
2021/02/06 Javascript
Python中optionParser模块的使用方法实例教程
2014/08/29 Python
Python程序中设置HTTP代理
2016/11/06 Python
python dataframe 输出结果整行显示的方法
2018/06/14 Python
Python通过调用有道翻译api实现翻译功能示例
2018/07/19 Python
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
2019/02/17 Python
在Python中过滤Windows文件名中的非法字符方法
2019/06/10 Python
python matplotlib库直方图绘制详解
2019/08/10 Python
Python reshape的用法及多个二维数组合并为三维数组的实例
2020/02/07 Python
Python3 操作 MySQL 插入一条数据并返回主键 id的实例
2020/03/02 Python
python print 格式化输出,动态指定长度的实现
2020/04/12 Python
解决Pymongo insert时会自动添加_id的问题
2020/12/05 Python
社区服务活动总结
2014/05/07 职场文书
企业消防安全责任书
2014/07/23 职场文书
小学红领巾广播稿(3篇)
2014/09/13 职场文书
工作证明英文模板
2014/10/21 职场文书
教师节晚会主持词
2015/06/30 职场文书
2019银行竞聘书
2019/06/21 职场文书
springboot如何初始化执行sql语句
2021/06/22 Java/Android