0

私はPHPでWebサイトを開発していますが、1つは私を非常に苛立たせています。のWebページの開始前に多くの空白があり<!DOCTYPE html>ます。私のウェブページとグーグルのホームページのソースコードのスクリーンショットを見てください:

私のウェブページ

グーグルのホームページ

これは本当に迷惑です。これらの行が1行目にあるはずなのに6行目にジャンプする理由がわかりません。

私のウェブページのソースコードは-

<?php
header('Content-Type: text/html');
require_once 'core.php';
$index=new Index();
$index->run('home', array('file.js', 'script.js', 'main.js'), array('style.css'));
?>
<!DOCTYPE html>
<!-- rest of the DOM here -->

空白を印刷することは何かあるに違いないと思いますが、そうではありませechoん。前にingcore.phpはありません。echo<!DOCTYPE html>

何が起こっている?私を助けてください。

4

3 に答える 3

3

「php スクリプト」などというものは存在しないことを覚えておいてください。PHPコードブロックが埋め込まれたファイルのみがあります。次のファイルは、「echo」/「print」呼び出しがまったくないにもかかわらず、4 つの空白行を出力します。

<?php
    // this is just a useless comment
?>



<?php
    /// and another useless comment, 4 lines later
?>

ブラケット ペアの外側にあるテキストはすべて<?php ?>、PHP エンジンによる出力と見なされます。

于 2013-01-28T17:18:07.700 に答える
2

これは、インクルードされる PHP ファイルの末尾にある空白が原因である可能性が高いです (「core.php」に他の多くのファイルが含まれていると仮定します)。?>これを回避する最も簡単な方法 (および一般的なベスト プラクティス) は、PHP ファイルの末尾にある final を省略することです。とにかく任意です。

これを診断するためのもう 1 つの簡単な方法は、(不要な)header()呼び出しを 1 行下に移動して、core.php インクルードの下に配置することです。このスクリプトがブラウザ出力を引き起こしている場合、標準の PHP 'headers sent' エラーが発生し、出力が開始された場所がわかります。

于 2013-01-28T17:20:32.663 に答える
2

core.php (またはそれに含まれるファイルのいずれか) には、最後の行の後に空白行があります?>か?

その場合は、 を削除し?>ます。ファイルの終わりまでにファイナル?>を暗示させるのが最善です。

それ以外の場合は、何が追加されているかを判断できるまで、コードベースの分割を開始してください。

于 2013-01-28T17:20:36.147 に答える