php閉合標籤輸出多餘空行使xml頁面顯示錯誤的處理

在PHP官方文檔中,曾經指出最好不要再結尾添加?>結束標記。但咱們編程的習慣和使用的IDE都會爲我
們自動創建php結束標記?>。這個標記使用在正常狀況下是不影響程序的運行的。尤爲在早期的php4中,這種
標記使用不當也不會影響最後的輸出。但我最近遇到了php腳本結束標記照成頁面沒法顯示的問題。
首先wap最終的輸出時xml文件,若是xml文件格式有問題,則沒法顯示結果。在屢次檢查輸出過程發現並無
問題,一樣的代碼再另外一臺測試機上顯示也無問題。經過firebug查看,最終的輸出php

clipboard.png

clipboard.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.phpui

<?php

  // do someing
  // 注意:後邊這個閉合標籤須要去掉,這樣上邊引入的時候輸出xml就不會出錯了。
  // ?>

OK,找到引入文件,去掉閉合標籤的就OK!spa

原文地址:http://hi.baidu.com/johntech/...調試

相關文章
相關標籤/搜索