PHPの公式ドキュメントでは、最後に?>終了タグを追加しない方がよいと指摘されています。しかし、私たちのプログラミング習慣と使用する IDE によって、php の終了タグが自動的に作成されます?>。通常、このマークを使用してもプログラムの動作には影響しません。特に初期の PHP4 では、この
タグが不適切に使用されても、最終的な出力には影響しません。しかし最近、PHPスクリプトの終了タグがページ上に表示されないという問題に遭遇しました。
まず、wapの最終出力はxmlファイルです。xmlファイル形式に問題があると結果を表示できません。何度も出力を確認したところ、別のテストマシンでも同じコードが問題なく表示されました。 firebug を通して見ると、最終的な出力
主な理由は、firebug の分析により、xml が出力される前に空白行が表示されることがわかります。この空白行は、xml の出力後としては正常ではありません。元のファイルをすべて検索すると、空行や同様の関数ステートメントが出力されません。 ob_clean を使用して 1 行ずつデバッグすると、ファイルの 1 つがロードされた後、出力に空白行が表示されることがわかり、最終的に、php ファイルの末尾の ?> の後に 2 つの空白行があることがわかりました。 。空白行を削除すると問題は解決され、出力は正常になります。 その理由を知るために、インターネットで関連情報を検索したところ、codeIgniter 開発仕様には次の説明が記載されています:
PHP 終了タグ "?>" PHP アナライザーは PHP ではオプションです。 ただし、終了タグが使用されている場合、開発者、ユーザー、または FTP アプリケーションによって終了タグの後にスペースが挿入されると、冗長な出力、PHP エラー、表示できない後続の出力、および空白ページが発生する可能性があります。したがって、すべての PHP ファイルでは、PHP 終了タグを省略し、これがファイルの最後であることを示すコメントを挿入し、アプリケーションに関連してファイルを配置する必要があります。これは、ファイルが終了し、削除されていないことを確認するのに役立ちます。// 错误的写法 INCORRECT <?php echo "Here's my code!"; ?> // 正确的写法 CORRECT: <?php echo "Here's my code!";
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;
<?php // do someing // 注意:后边这个闭合标签需要去掉,这样上边引入的时候输出xml就不会出错了。 // ?>