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

yipeiwu_com6年前PHP代码库

在一些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下操作Linux消息队列完成进程间通信的方法

关于Linux系统进程通信的概念及实现可查看:http://www.ibm.com/developerworks/cn/linux/l-ipc/   关于Linux系统消息队列的概念及实...

深入PHP empty(),isset(),is_null()的实例测试详解

有关 PHP 的 empty(),isset() 还有 is_null() 这三个函数的用法讨论得已经很多了,而且很多资料也未必能说得很清楚。这里再重复一次,但不是从概念去说,直接用程序...

浅谈php提交form表单

处理GET请求 实现的功能是输入姓名后页面显示“Hello XXX” 创建html文件hello.html: <!DOCTYPE html> <html>...

php学习之function的用法

1,申明函数 在PHP中,定义函数的方法同其他编程语言几乎一样.下面是PHP申明函数的语法结构: 复制代码 代码如下: Function function_name($argument1...

不错的dedecms修改实用集锦第1/2页

采集去除链接 复制代码 代码如下:{dede:trim}<a ([^>]*)>([^<]*)</a>{/dede:trim} ——...