首页 后端开发 php教程 php闭合标签输出多余空行使xml页面显示错误的处理

php闭合标签输出多余空行使xml页面显示错误的处理

Nov 21, 2016 pm 05:17 PM
php

在PHP官方文档中,曾经指出最好不要再结尾添加?>结束标记。但我们编程的习惯和使用的IDE都会为我
们自动建立php结束标记?>。这个标记使用在正常情况下是不影响程序的运行的。尤其在早期的php4中,这种
标记使用不当也不会影响最后的输出。但我最近遇到了php脚本结束标记照成页面无法显示的问题。
首先wap最终的输出时xml文件,如果xml文件格式有问题,则无法显示结果。在多次检查输出过程发现并没有
问题,同样的代码再另一台测试机上显示也无问题。通过firebug查看,最终的输出

t0128f824aa7ed65fdd.png

t0128f824aa7ed65fdd.png

主 要原因,通过firebug分析,可以发现在输出xml之前出现了空行,这个空行照成xml输出不正常,找遍所有原文件并没有任何输出空行或者类似功能语 句。使用ob_clean逐行调试,发现在其中一个文件加载后,输出出现了空行,最终发现是由于那个php文件结尾?>后有两行空行。将空行去掉, 问题解决输出正常。
究其原因,在网上搜索了相关资料,codeIgniter开发规范给出如下解释:
PHP闭合标签“?>” 在PHP中对PHP的分析器是可选的。 但是,如果使用闭合标签,任何由开发者,用户,或者FTP应用程序插入闭合标签后面的空格都有可能会引起多余的输出、php错误、之后的输出无法显示、空 白页。因此,所有的php文件应该省略这个php闭合标签,并插入一段注释来标明这是文件的底部并定位这个文件在这个应用的相对路径。这样有利于你确定这 个文件已经结束而不是被删节的。

 // 错误的写法 INCORRECT
<?php echo "Here's my code!"; ?>

// 正确的写法 CORRECT:
<?php echo "Here's my code!";
登录后复制

Demo:

test.php
<?php
header("Content-type:text/xml");
include_once('sys_common.php');

echo'<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[测试]]></title>
<link><![CDATA[http://baidu.com]]></link>
<description><![CDATA[测试空行输出]]></description>
<language><![CDATA[zh-CN]]></language>
<pubDate><![CDATA[18.11.2016 14:54:02]]></pubDate>
<lastBuildDate><![CDATA[18.11.2016 14:54:02]]></lastBuildDate>
</channel>
</rss>';
// exit;
登录后复制

需要引入的系统文件sys_common.php

<?php

  // do someing
  // 注意:后边这个闭合标签需要去掉,这样上边引入的时候输出xml就不会出错了。
  // ?>
登录后复制

OK,找到引入文件,去掉闭合标签的就OK!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南 适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南 Dec 24, 2024 pm 04:42 PM

适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南

CakePHP 日期和时间 CakePHP 日期和时间 Sep 10, 2024 pm 05:27 PM

CakePHP 日期和时间

CakePHP 项目配置 CakePHP 项目配置 Sep 10, 2024 pm 05:25 PM

CakePHP 项目配置

CakePHP 文件上传 CakePHP 文件上传 Sep 10, 2024 pm 05:27 PM

CakePHP 文件上传

CakePHP 路由 CakePHP 路由 Sep 10, 2024 pm 05:25 PM

CakePHP 路由

讨论 CakePHP 讨论 CakePHP Sep 10, 2024 pm 05:28 PM

讨论 CakePHP

CakePHP 快速指南 CakePHP 快速指南 Sep 10, 2024 pm 05:27 PM

CakePHP 快速指南

如何设置 Visual Studio Code (VS Code) 进行 PHP 开发 如何设置 Visual Studio Code (VS Code) 进行 PHP 开发 Dec 20, 2024 am 11:31 AM

如何设置 Visual Studio Code (VS Code) 进行 PHP 开发

See all articles