Header 在 PHP 实施后移位(UTF-8 BOM)

Header displaced after PHP implementation (UTF-8 BOM)

在我加入他们之前,我的公司有一个不错的网站,从那以后多年都被外包并且没有动过。加入后我一直在慢慢改进我的 free-time.

本周我重写了所有页面上相同的 header/left-column/footer 以便我可以使用 PHP 包含它们并避免在我想更改某些内容时修复它们 one-by-one (以及其他好处)。

我没有 well-versed 搞乱 .htaccess 也没有 PHP 但我真正改变的是:

  1. 通过添加到 .htaccess:
  2. 允许 PHP 使用 .html 文件

AddType application/x-httpd-php5 .html .htm

  1. 我改了:

<?xml version="1.0" encoding="UTF-8"?>

收件人:

<?php echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";?>

避免

  1. 将三个常用元素 header、left-column 和页脚复制并粘贴到单独的 HTML 文件中,并使用:
  2. 包含它们

<?php include '_header.html';?>

  1. 稍微更改了左上角的文字,但这不会影响任何内容。

加载两个页面(PHP 包含和普通 html)后查看源代码,它们看起来相同。 我没有更改任何 CSS,所以他们使用相同的代码。

但由于某些原因切换到 PHP 包含版本会在页面顶部添加一个空行。

这是当前(纯 XHTML)版本: http://www.akidc.co.jp/index.html 供参考的新文件是: ((删除过时的link)) (我无法更改 .htaccess,直到我一次上传所有新页面,否则

我包含的 header 文件位于 _header.html

请帮我解决一下差距^_^

运行 源代码差异,您会立即注意到这里发生了什么。

在 PHP 版本中,您在 <div id="header" ...> 之前有一个 U+FEFF。这被浏览器解释为内容,因此它尝试显示该内容。

为了解决这个问题,请确保您的所有源代码都以 UTF-8 格式存储。

顺便说一句,这是不同之处:

看到了吗<feff>?

现在,查看页面的元素。这是你之前拥有的:

这就是您在 PHP 版本中得到的:

注意到我突出显示的附加“”块了吗?