PHP包含会导致页面顶部出现空白区域

时间:2012-04-17 21:21:15

标签: php

我在网站上遇到问题。我页面顶部有这一行空白区域。我无法找到它的来源。这可能是因为我的页面中有额外的换行符,这要归功于php include(),或者它可能只是一些有缺陷的CSS。

15 个答案:

答案 0 :(得分:35)

我明白了!我必须承认,这是一个非常奇怪的问题。

This是我的确切问题,他的解决方案完美地修复了它。


问题是因为include()

当您将页面保存为UTF-8时,文件开头会包含一个称为字节顺序标记(或BOM)的特殊签名,表示它是UTF-8文件。您只能看到具有低级文本编辑器的BOM(例如DOS edit)。您需要从包含的文件中删除此签名,以便摆脱页面顶部的空白区域。

DOS edit

答案 1 :(得分:14)

在Notepad ++中,您可以从“编码”菜单将文件的编码更改为“无BOM的UTF-8”。这解决了我的问题。

答案 2 :(得分:7)

  1. 在Notepadd ++中打开文件

  2. 从顶部栏开始:编码 - >在没有BOM的UTF8中编码

  3. 保存文件

  4. 在Dreamweaver中

    按CTRL + J或转到更改 - >页面设置 - >平铺/编码,如果已经取消,则取消选中 UNICODE BOM

答案 3 :(得分:4)

你是否缺少初学者的DOCTYPE ......你也没有指定字符编码。

除此之外,请确保如果您将文件保存为UTF-8,则一开始就不能有BOM。还要确保你没有留下任何空行(虽然可能忽略了空格,否则我写过的每个布局都会破坏)

答案 4 :(得分:3)

出于某种原因,在第一个div之前你的身体标签后你有一些时髦的角色......只需删除它们并根据需要重新缩进。确切地说字符  ...(如果你检查页面的 HTML ,你可以在Firebug中看到它...但你不能在view-source中看到它,因为它呈现为空格。)

与对齐问题无关的

...您的登录/注册链接后也会有一个未匹配的结束</li>标记。

答案 5 :(得分:3)

您可以通过以下方式解决此问题...

基于scunliffe所说的......你可以避免这个角色......例如

$file = file_get_contents('header.php');
$file = substr($file, 3, strlen($file));
echo $file;

所以,你正在跳过这个错误......

问候

答案 6 :(得分:3)

重要说明:如果您使用utf-8在我的网站上有多个php页面,则需要确保更改 每个页面的编码 是“在没有BOM的情况下在utf-8中编码”。

答案 7 :(得分:1)

是的,在其他任何事情之前都有额外的空白。

我建议您使用output buffering吗?您将获得对推送给客户的内容的精细控制。

答案 8 :(得分:0)

声明DOCTYPE后,请确保将CSS重置添加到CSS代码的第一行,以使其在所有浏览器中保持一致:

*{margin:0;
 padding:0;
 }

答案 9 :(得分:0)

在查看firebug上的网站输出时,我在html渲染之上发现了小问题。在屏幕截图中查看。 firebug report

可能是因为页面顶部缺少doctype。在页面顶部添加以下doctype并再次查看输出。

<!doctype html>
<html itemtype="http://schema.org/WebPage" xmlns="http://www.w3.org/1999/xhtml"   xmlns:og='http://opengraphprotocol.org/schema/'
xmlns:fb='http://www.facebook.com/2008/fbml'>

答案 10 :(得分:0)

在线测试所有建议,用记事本解决,程序:

  1. php而不是<?
  2. 复制要包含的文件的所有内容
  3. 打开记事本并输入<?,然后粘贴所有代码
  4. 享受

答案 11 :(得分:0)

这个问题在很长一段时间内一直困扰着我,直到找到一个非常简单的解决方案。

此问题是由BOM字符引起的,该字符用于告知代码页以及哪个字节序是文本文件。当您包含PHP文件时,也会包含此字符。虽然您不会看到BOM字符,但可能会导致页面出现间隙。

我的解决方案就在这里。 您不必从文件中删除此字符。你要做的就是这样:

<!-- <?php
include_once (dirname(__FILE__) . "/_include.php");
?> -->

使用HTML注释标记来包装包含其他php文件的php代码。 BOM字符将被视为注释,不会显示在页面上。

答案 12 :(得分:0)

BOM Character会产生这个问题。有时它不会创造出人们看到的视觉特征。只需检查文件编辑器设置并设置为“无BOM”以防止出现此类空行。

由于图像的字符集被这样的字符破坏,有时图像因此而无法使用。

为避免这种情况, 一世)。检查代码编辑器是否使用BOM创建新文件。如果是,请更改此设置。 ⅱ)。打开代码的所有文件并在开始时检查BOM字符(

答案 13 :(得分:0)

试试这个,这是我知道的最好的主意,欢呼

<div style="position:absolute;">
<?php include("conn.php"); ?>
</div>
<!DOCTYPE html>

答案 14 :(得分:0)

我刚刚下载了Notepad ++,应该建议没有BOM的UTF-8不是编码选项。仅选择“ UTF-8”而不是“ UTF-8 BOM”。那行得通。