PHP / HTML / CSS:IE使用require_once()时表现得很奇怪

时间:2009-07-30 20:16:08

标签: php html css internet-explorer require-once

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

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

require_once(PATH_INCLUDES . 'adjacency.php');

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

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

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

任何?

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

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

包含的PHP文件是否以UTF-8 BOM(字节顺序标记)开头?这是一个不可见的字节序列,有时会出现在Unicode文本文件的开头,以帮助自动检测UTF。不幸的是,PHP有些天真,并且会在从包含的PHP文件中读取BOM时输出BOM。根据我的实验,IE可以处理一个BOM,但是如果BOM加倍(如果浏览器请求的PHP文件和包含BOM的每个包含BOM的情况就是如此)那么它就不能看到doctype在开头并且因此触发了怪癖模式。

确保您的编辑器配置为不使用BOM进行保存。