什么情况下可以不写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短域名转换为实际域名函数
Jan 17 PHP
PHP与MongoDB简介|安全|M+PHP应用实例详解
Jun 17 PHP
浅析php header 跳转
Jun 17 PHP
解析数组非数字键名引号的必要性
Aug 09 PHP
php使用PDO操作MySQL数据库实例
Dec 30 PHP
WordPress中用于更新伪静态规则的PHP代码实例讲解
Dec 18 PHP
PHP序列化/对象注入漏洞分析
Apr 18 PHP
yii2.0数据库迁移教程【多个数据库同时同步数据】
Oct 08 PHP
基于PHP实现用户注册登录功能
Oct 14 PHP
PHP正则之正向预查与反向预查讲解与实例
Apr 06 PHP
PHP 8新特性简介
Aug 18 PHP
PHP接入支付宝接口失效流程详解
Nov 10 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
PHP实现MVC开发得最简单的方法――模型
2007/04/10 PHP
PHP 向右侧拉菜单实现代码,测试使用中
2009/11/03 PHP
php中namespace及use用法分析
2016/12/06 PHP
javascript学习笔记(八) js内置对象
2012/06/19 Javascript
jQuery获取和设置表单元素的方法
2014/02/14 Javascript
JS调试必备的5个debug技巧
2014/03/07 Javascript
jquery左边浮动到一定位置时显示返回顶部按钮
2014/06/05 Javascript
JavaScript中具名函数的多种调用方式总结
2014/11/08 Javascript
javascript抽象工厂模式详细说明
2014/12/16 Javascript
JavaScript数据结构和算法之图和图算法
2015/02/11 Javascript
关于Vue.js一些问题和思考学习笔记(2)
2016/12/02 Javascript
常用jQuery选择器汇总
2017/02/02 Javascript
详解闭包解决jQuery中AJAX的外部变量问题
2017/02/22 Javascript
JS删除数组里的某个元素方法
2018/02/03 Javascript
详解vue2.0+vue-video-player实现hls播放全过程
2018/03/02 Javascript
vue中keep-alive的用法及问题描述
2018/05/15 Javascript
安装vue-cli的简易过程
2018/05/22 Javascript
jQuery实现checkbox全选、反选及删除等操作的方法详解
2019/08/02 jQuery
js对象简介与基本用法示例
2020/03/13 Javascript
小程序双头slider选择器的实现示例
2020/03/31 Javascript
一起深入理解js中的事件对象
2021/02/06 Javascript
python通过zlib实现压缩与解压字符串的方法
2014/11/19 Python
Python set常用操作函数集锦
2017/11/15 Python
python pandas 组内排序、单组排序、标号的实例
2018/04/12 Python
python制作填词游戏步骤详解
2019/05/05 Python
python实现海螺图片的方法示例
2019/05/12 Python
Python将文字转成语音并读出来的实例详解
2019/07/15 Python
关于pymysql模块的使用以及代码详解
2019/09/01 Python
Python tcp传输代码实例解析
2020/03/18 Python
Django框架获取form表单数据方式总结
2020/04/22 Python
Pycharm快捷键配置详细整理
2020/10/13 Python
德国户外商店:eXXpozed
2020/07/25 全球购物
C#里面可以避免一个类被其他类继承么?如何?
2013/09/26 面试题
工商企业管理实习自我鉴定
2013/12/04 职场文书
办公室秘书自我鉴定
2014/01/18 职场文书
房屋租赁协议书(标准版)
2014/10/02 职场文书