【问题标题】:How can I avoid the blank space when using PHP include?使用 PHP 包含时如何避免空格?
【发布时间】:2012-08-13 03:10:26
【问题描述】:

我有一些文件需要包含在几个页面中,所以我使用类似

<html>
<head>
<title>This is a webpage</title>
</head>
<body>
<div>Hello, this is a webpage</div>
<?php include("header.html");?>
<div>Some more text.</div>
<?php include("BlockToInclude.php");?>
<div>Even more text.</div>
<?php include("footer.html");?>
</body>
</html>

问题在于,对于每个include();,我在包含的内容之前都会得到一个 20 像素的空白空间。我通过将第一个包含块的边距减少 20px 来解决这个问题,但我更喜欢避免这个空间而不是补偿它的东西。另外,我是 PHP 新手,这是正常行为还是我应该寻找我做错了什么?

更新:我检查了生成的代码,在我调用insert(); 函数的每个地方,它都出现了一个不在原始文件中的陌生字符(也不是调用者或包含的)。我将代码从 Firefox 代码查看器(不可见)复制到我的编辑器(Windows 中的 RJ TextEd),它在框中显示为问号;如果我将此代码保存为静态 html 它呈现相同,但如果我删除这些字符,则空白消失。有什么想法吗?

【问题讨论】:

  • 这是您的 html/css 的问题,与 php 无关。查看生成的 html,这就是您的问题所在。
  • 查看你包含的文件,看看是否有空格,然后确定
  • 这肯定是您的 html 页面的问题。 html页面中的内容必须创建20像素的空白空间,我认为你应该使用firbug类型的工具来调试。 php include 函数完全没有问题。
  • 我检查了生成的代码,在我调用insert(); 函数的每个地方,它都出现了一个不在原始文件中的陌生字符(也不是调用者或包含的文件)。我将代码从 Firefox 代码查看器(不可见)复制到我的编辑器(Windows 中的 RJ TextEd),它在框中显示为问号;如果我将此代码保存为静态 html 它呈现相同,但如果我删除这些字符,则空白消失。有什么想法吗?

标签: php include


【解决方案1】:

我在这里找到了这个话题

有人说:

我以前遇到过这个问题。确保您以 ASCII 格式而不是二进制格式上传文件。有时,对于某些 FTP 服务器,您必须手动设置。还可以尝试在文本编辑器中将换行符转换为“\n”。让我知道您使用的是哪个编辑器,我会给您更具体的说明。

http://forums.digitalpoint.com/showthread.php?t=957679

有人解决了它: 我使用记事本++ (http://notepad-plus.sourceforge.net/) 解决了这个问题 用 notepad++ 打开 php 文件,在 Format 菜单中选择 encode in utf-8 without BOM 并保存。

希望对你有所帮助

【讨论】:

  • 是的,这就是问题所在。谢谢。我不认为这是一个编码问题,因为每个文件都有相同的。我想知道 &lt;meta /&gt; 是否可以避免这种情况。
  • 嗯不知道,但我认为如果你有正确的编码,你会解决你的问题。
  • 对于那些使用 Adob​​e Dreamweaver 的人,如果您“另存为”您的页面并用“包括 Unicode 签名 (BOM)”覆盖它,则未选中它会修复它。
【解决方案2】:

包含的文件末尾有空格吗?默认情况下,PHP 不会从 include 指令中创建任何空格,除非后面有空格,例如

没有空格:

<?php include('x'); ?>
</div>

将包含一行空格:

<?php include('x'); ?>

</div>

如果包含的文件末尾有空格,则会得到输出。

【讨论】:

  • 据我所知,他询问的是浏览器呈现的页面布局,html 中的空格根本不应该影响它。
  • 文本中的空格会影响布局,尤其是在像素完美的内容上。
【解决方案3】:

不完全相同,但相似:

在我的包含文件的位置,我的 html 中出现了一个神秘的“1”。

这是一个简单而愚蠢的错误,我将包含放在使用短标签中:

<?=include('social-media-box.php')?>

而不是正确地:

<?php include('social-media-box.php'); ?>

无论出于何种原因,这都会导致“1”出现。无论如何,使用完整的 php 标签摆脱了它。

希望对某人有所帮助。

【讨论】:

  • 因为在php中,当你使用=等于
【解决方案4】:

我在这里回答了类似的情况: https://stackoverflow.com/a/26658129/292060

问题是带有 BOM 字符的 UTF-8 编码,导致出现空格。

【讨论】:

    【解决方案5】:

    它的html行为,因为你把include放在div标签下,试着把它放在它旁边。你的代码会是这样的

    ...</div><?php include("file.php") ?>
    

    【讨论】:

      【解决方案6】:

      这可能会帮助您找到并减少空白。

      1. 查看源代码,看看您是否可以找出哪些包含的文件正在创建空白。

      2.让你的 div 块带有边框颜色,这样你就知道你的 div 块占用了多少空间。

      1. 看看你的包含文件的代码是否可以不带任何空格或多余的行。您可以压缩包含的文件

      【讨论】:

        【解决方案7】:

        将此规则放在 CSS 的开头, 它将禁用页面中元素的默认填充和边距。

        *
        {
            margin: 0;
            padding: 0;
        }
        

        【讨论】:

          【解决方案8】:

          放在&lt;!DOCTYPE...之前

          喜欢这段代码:

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

          并编写您的页面代码...

          【讨论】:

            猜你喜欢
            • 2022-12-05
            • 2017-02-18
            • 2014-02-25
            • 2017-12-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-02-20
            • 1970-01-01
            相关资源
            最近更新 更多