0

好吧,我遇到了历史上最奇怪的问题。我正在制作一个可以在 HTML 中完美运行的网站,但是在从 PHP 呈现时却出现了一些非常奇怪的行为——尽管客户端源代码完全相同(我逐个字符地浏览了它)。

起初我以为我在包含的“functions.php”文件中弄乱了一些东西,但我没有收到任何错误,当我将该文件的内容复制并粘贴到包含的地方时('函数.php'); 线是,问题消失了。

这是我的代码(删除了一些 HTML,这是所有的 PHP):

<?php
    error_reporting(E_ALL);
    ini_set('display_errors','1');
    include 'functions.php';
    $footer = file_get_contents('footer.txt');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <title>Removed</title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js"></script>
    <script type="text/javascript" src="js/main.js"></script>
    <link type="text/css" rel="stylesheet" href="css/jquery-ui-custom.css" />
    <link type="text/css" rel="stylesheet" href="css/main.css" />
</head>
<body>
    <div id="header">
        <div id="headerContent">
        <div id="logo">
            &nbsp;
        </div>
<?php
    echo trim(GetNav());
?>
        </div>
    </div>
    <div id="content">
<?php
    $NumberOfNewsItems = 2;
    echo trim(GetNews($NumberOfNewsItems));
?>
    </div>
<?php
    echo trim($footer);
?>

</body>
</html>

GetNav 和 GetNews 函数从数据库中获取信息,所以我不会显示它们的代码,另外,正如我之前提到的,如果我不包含文件,而是将其内容复制到我进行包含的地方调用然后大部分空白消失(仍然有一些'echo $footer'调用所在的位置。

基本上,当您查看源代码时,一切看起来都很好。当你按下 F12 来查看开发工具时,事情变得非常奇怪,元素选项卡在标签之后(这会影响网站的外观)以及在页脚和内容 Div(同样会影响网站的外观)。

同样在此视图中,来自 的所有标签都位于第一组空白下方,并且标签为空(例如:)<head></head>

源代码看起来不错(如果我将源代码复制并粘贴到 HTML 文件中,它可以完美地工作),我不得不承认这让我大吃一惊。

请帮助我 Obi-Wan-Kenobi,你是我唯一的希望(是的,我喜欢《星球大战》,尽管我希望他们制作的电影不止三部)。

PS 这可能非常明显,但我是一个 .Net 开发人员,在业余时间为家人做这件事(学习新语言也很有趣,即使是那些过度喜欢 $ 符号的语言),所以如果提前道歉我是世界上最大的新手。

编辑:我在开发工具中看到的是:

<html xmlns="http://www.w3.org/1999/xhtml">
<head></head>
<body>
"



      "
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <title>Removed</title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js"></script>
    <script type="text/javascript" src="js/main.js"></script>
    <link type="text/css" rel="stylesheet" href="css/jquery-ui-custom.css" />
    <link type="text/css" rel="stylesheet" href="css/main.css" />

等等。

EDIT2:为了清楚起见,我不在乎开发工具显示什么,只是我得到空白显示这些引号在实际网站上的位置,除了一切都很完美。

EDIT3:此外,无法使用元素选择器单击空格,并且在元素选项卡中选择空格不会突出显示网站上的任何内容。在元素选项卡中删除它但是确实修复了网站(直到它明显重新加载),但显然对我的问题没有帮助。

4

3 回答 3

1

尝试删除 functions.php 文件中的 ?> 并且代码后没有空白行。functions.php 是否与主文件位于同一目录中?

只是一个提示,包括一个 footer.php 而不是 file_get_content :-)

于 2013-03-08T12:47:19.863 回答
0

我无法以令我满意的方式解决此问题,但这是我实施的解决方法:

我从头文件中完全删除了 include,并将 functions.php 分解为每个函数一个文件,并将它们包含在需要调用的地方。

这缓解了我的问题,尽管它并不理想。很高兴我不必每天都使用 PHP :)。

于 2013-03-11T12:48:17.467 回答
0

我遇到了同样的问题,在控制台上,html 的源代码如下所示:

通过检查编码,一些文件用 utf-8 和 bom 编码,一些文件用 big5 编码。通过将这些文件保存到 utf-8(没有 bom)为我解决了这个问题。

我已经使用 Sublime Text 2 和包管理器中的 EncodingHelper 来查看当前文件编码。

希望能帮助到你。

于 2013-03-13T15:10:07.450 回答