Php 下面的空白空间;车身>;标签及标签;脚本标记和链接标记位于head标记的body标记下

Php 下面的空白空间;车身>;标签及标签;脚本标记和链接标记位于head标记的body标记下,php,html,utf-8,smarty,byte-order-mark,Php,Html,Utf 8,Smarty,Byte Order Mark,我用php+smarty编写了一个php应用程序 当我在firebug中查看web源代码时,我发现link标记和script标记位于body标记下。但是它应该在标题下 在body标签下面有一些空格 在我的网页顶部有空白 问题是什么?添加以下CSS: html, body { padding: 0px; margin: 0px; } 您在标记之前的中有一些零散的文本内容。浏览器看到文本并决定这意味着您正在启动主文档正文,但忘记包含标记 如果在HTML4中不可取,这实际上是有效的:

我用php+smarty编写了一个php应用程序

当我在firebug中查看web源代码时,我发现link标记和script标记位于body标记下。但是它应该在标题下

body标签下面有一些空格

在我的网页顶部有空白

问题是什么?

添加以下CSS:

html, body
{
    padding: 0px;
    margin: 0px;
}

您在
标记之前的
中有一些零散的文本内容。浏览器看到文本并决定这意味着您正在启动主文档正文,但忘记包含
标记

如果在HTML4中不可取,这实际上是有效的:
结束标记和
开始标记都是可选的。这就是你如何拥有
xHello作为有效的HTML文档。但这在XHTML中是不允许的,因此,如果您在出现错误文本时遇到“此处不允许字符数据”错误

然后浏览器将文档的其余部分解析为正文内容,将
放在正文中(这是无效的,但很常见)。它忽略了真正的
,因为它已经有了一个主体


如果你看不到散乱的文本,可能是一个看不见的字符,比如U+00A0不间断空格
,或者最有可能是中文文档-U+3000表意空格
 ,在某些输入法模式下按空格键时可能会出现此错误。这些字符是不可见的,但它们不像普通的U+0020空格或换行符那样是“可忽略的空白”,因此它们会触发“文本内容”处理,并强制

通过验证器()发送您的HTML-它会告诉您出现了什么样的错误(缺少结束标记或其他东西)。

空白,特别是在网页开始时,由于文件以UTF-8格式保存(其中包含BOM),通常会导致错误。如果您使用的是记事本++或Vim之类的编辑器,请将文件保存为UTF-8格式,不带BOM。

我已经尝试过了,没有任何更改。这似乎不是CSS的问题。事实上,我总是以*{margin:0px;padding:0px}:d开始我的布局,而不是像
*{margin:0;padding:0}
这样的拙劣重置作业。你真的应该使用正确的重置CSS文件。这里有一些:)而不是截图,只给我们页面的HTML代码。我想这就是重点,所以我如何纠正错误。在搜索Web之后,他们说可能是UBF-8与BoM.W3C标记验证器的问题显示:“在UTF-8文件中发现的字节顺序标记。UTF-8编码文件中的Unicode字节顺序标记(BOM)已知会对一些文本编辑器和旧浏览器造成问题。在更好地支持之前,您可能需要考虑避免使用它。”是的,这是一个合理的警告,你应该清除假BOM(保存在文本编辑器中为UTF-8-without-BOM),但这不是问题的原因。@bobince,请检查你的电子邮件框。我已向你发送了示例文档。你发送的文件没有任何错误文本,也没有显示这种行为(在
之前结束
,并因此导致间隙)对于我来说。我不清楚模板如何在
之间添加任何内容。html输出是什么样子的?