2

现在这是我在 PHP 中遇到过的最奇怪的问题。

除了一个之外,所有页面看起来都很正常;当我第一次看到这个问题时,我认为这是 IE 和样式表的常见问题之一(我在这个页面上有一个特定的 CSS 文件)。我试图排除 CSS 文件只是为了确保问题确实出在这个文件中,但事实并非如此。然后我以为我忘记关闭任何 HTML 标签,所以我多次检查代码,但似乎一切都正确。于是我开始把代码放在评论里,和IE比较,直到我意识到当我把下面的代码放在评论里时,页面本身表现正常:

require_once(PATH_INCLUDES . 'adjacency.php');

这是一个有效的路径,并且该文件确实只包含一个带有函数的类 - 如果 MySQL 查询失败,除了 die() 之外没有任何输出。

在 IE 中看起来很奇怪的一些事情如下:

  • 容器通常居中,现在位于左侧。
  • 带有repeat-x 的背景并没有一路走下去。
  • 菜单中的悬停功能不起作用。

任何人?

编辑:我试图将 adjacency.php 包含在另一个文件中,并且发生了同样的问题。

4

2 回答 2

5

作为猜测,在关闭“?>”之后,包含文件的末尾很可能有一些空间。(Zend Framework 建议不要使用结束 PHP 标记的原因之一。)

于 2009-07-30T20:22:31.040 回答
1

包含的 PHP 文件是否以 UTF-8 BOM(字节顺序标记)开头?这是一个不可见的字节序列,有时出现在 Unicode 文本文件的开头,以帮助自动检测 UTF。不幸的是,PHP 有点幼稚,当它从包含的 PHP 文件中读取 BOM 时,它会输出 BOM。通过我的实验,IE 可以处理一个 BOM,但是如果 BOM 加倍(如果浏览器请求的 PHP 文件和一个包含的每个都包含 BOM,则会出现这种情况),那么它无法将 doctype 视为在开头并且因此触发了怪癖模式。

确保您的编辑器配置为在没有 BOM 的情况下保存。

于 2009-07-30T21:53:24.087 回答