0

我正在用 PHP 开发一个网站,但有一件事让我很烦恼。网页开始前有很多空白<!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东西在core.php打印一些空白,但事实并非如此。以前没有echoing <!DOCTYPE html>

怎么了?请帮帮我。

4

3 回答 3

3

请记住,没有“php 脚本”之类的东西。只有文件中嵌入了 PHP 代码块。以下文件将输出 4 个空白行,即使其中绝对没有“echo”/“print”调用:

<?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。无论如何它是可选的。

您可以尝试诊断此问题的另一件快速事情是将您的(不必要的)header()调用向下移动一行,使其位于 core.php 包含的下方。如果此脚本导致浏览器输出,您将收到标准的 PHP 'headers sent' 错误,它将告诉您输出开始的位置。

于 2013-01-28T17:20:32.663 回答
2

core.php(或它包含的任何文件)在 final 之后是否有空行?>

如果是这样,请删除?>. 最好?>在文件末尾隐含final。

否则,只需开始平分您的代码库,直到您可以确定添加它的内容。

于 2013-01-28T17:20:36.147 回答