【问题标题】:php vs htm, weird gapsphp vs htm,奇怪的差距
【发布时间】:2025-12-19 12:05:10
【问题描述】:

正常的:

http://labvc.x10hosting.com/AT/site/home.htm

VS

奇怪的:

http://labvc.x10hosting.com/AT/site/home.php

当我并排查看代码时,它几乎相同,唯一会让它们产生奇怪差距的应该是 CSS,但它们使用的是同一张表。

想法?


编辑: 我检查并对代码进行了微小的更改,再次查看源代码。
两者完全相同。 wtf就是有这个差距的。


编辑: 在 xml 减速之前有一个像素宽的字符,我该如何阻止它发生?

【问题讨论】:

  • 在您修改后更新了我的答案。

标签: php css xhtml


【解决方案1】:

在页面顶部的 php 中有一个 ,解释了恕我直言的差距

【讨论】:

    【解决方案2】:

    您的 PHP 输出在头部有一个双 byte-order-mark

    使用 Firebug 检查您的代码,我认为这是第一行

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

    现在,所有那些时髦的字符都只是 UTF-8 BOM (0xEF 0xBB 0xBF) 的 ISO-8859-1 解码。

    这些可能由您的 IDE/编辑器添加到 PHP 文件本身的头部。检查您的偏好并查看正在使用的编码。如果它类似于“UTF-8 + BOM”,则将其切换为“UTF-8”,这应该可以解决它。

    【讨论】:

    • 每一个文件都保存为utf-8,如何去掉?
    • 某些东西正在将 BOM 注入您的文件中。下载一个十六进制编辑器并在本地打开它们以查看它们是否存在。或者使用像 EditPlus 这样的编码感知文本编辑器打开它们——它会告诉你是否有 BOM。
    • 在记事本++中打开了所有东西,一切都很干净。这东西到底在哪里:S
    • 确定它是干净的吗? BOM 不是可见字符(通常)。您不能只是在文本编辑器中打开它并寻找空间。您需要检查字节。
    • notpad++ 支持所有常用编码,我如何找到/编辑/删除这个字节标记?我认为将代码复制粘贴到一组新文件中以替换我的其他文件,但是稍后再这样做,我已经太久了。稍后回来查看进度。
    【解决方案3】:

    php 页面在解释额外空格的 doctype 之前生成一个 "."

    html页面

    <!DOCTYPE html
    
        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    

    php 页面

    .
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    

    删除php页面中doctype上方的任何代码

    【讨论】:

      【解决方案4】:

      如果您在 PHP 文件的顶部包含任何文件,则可能是您在包含的文件中实际上有空格或结尾之后的句点?>

      header.php
      <?php
        phpstuff...
      ?> <whitespace or period here>
      
      home.php
      <?php
        include "header.php";
      ?>
      

      这可以通过在纯 PHP 文件中从不使用 ?> 来解决。可以这样打开它:

      <?php
        phpstuff...
      

      【讨论】:

        【解决方案5】:

        您在 PHP 文件的源代码顶部(在 xml 声明之前)有一个额外的空白。

        【讨论】:

        • 我该如何阻止它这样做?