为什么PHP会将所有内容从标记移动到标记?

时间:2015-05-14 04:46:04

标签: php html

老实说,我不知道如何解释这一点,我能做的最好的就是展示例子。

1:HTML - DOM

<html>
    <head>
        <title>My Webpage</title>
    </head>
    <body>
        <section id="main">
            <span>Lorem ipsum dolor sit amet.</span>
        </section>
    </body>
</html>

好!一切都在#1中完美运作。但是,当我将PHP添加到代码中时......

2:HTML/PHP - DOM

<?php
    include_once($_SERVER['DOCUMENT_ROOT'] . "/classes/main.php");
?>
<html>
    <head>
        <title>My Webpage</title>
    </head>
    <body>
        <section id="main">
            <span>Lorem ipsum dolor sit amet.</span>
        </section>
    </body>
</html>

出于某种原因,包括该文件会将<head>标记中的所有内容移至<body>。另外,<body>中有两个新行,它们在窗口顶部和内容之间放置了一个恼人的空间。

为什么会这样?

1 个答案:

答案 0 :(得分:1)

问题是由于include_once()或include()。

当您将页面保存为UTF-8时,文件开头会包含一个称为字节顺序标记(或BOM)的特殊签名,表示它是UTF-8文件。您只能看到具有低级文本编辑器的BOM(例如DOS编辑)。您需要从包含的文件中删除此签名,以便摆脱页面顶部的空白区域。

您可以执行以下操作来解决此问题:

$file = file_get_contents('header.php');
$file = substr($file, 3, strlen($file));
echo $file;

这样做可以避免角色。

OR

在Notepad ++中,您可以从“编码”菜单中将文件的编码更改为“无BOM的UTF-8”。