【问题标题】:PHP adding empty text node before including html filePHP在包含html文件之前添加空文本节点
【发布时间】:2015-01-12 21:20:25
【问题描述】:

我使用 php 作为模板引擎,我注意到当我包含视图文件时,在该视图的内容之前添加了空文本节点。

例如,我想要包含以下内容的 html 文件:

<p>Some text</p>

比我像这样包含该文件:

<div><?php require_once('file/path.htm'); ?></div>

(请注意,我已经删除了 div 和 php 之间的所有空格)并且在 php 包含文件之后,他添加了空文本节点(我将其标记为“”),在 p 标签之前添加了空格,所以我得到了类似的东西这个:

Some previous content...
<div>    
"" //empty text node
<p>Some text</p>
</div>

这很成问题,因为它破坏了内容组合。有什么解决办法吗?

【问题讨论】:

  • 如果没有require_once 也会发生同样的情况,即如果&lt;div&gt; 仅静态包含&lt;p&gt;?确保任何 PHP 脚本的开头 &lt;?php 之前没有空格,并且您应该也可以省略任何结尾 ?&gt;
  • 在您的示例中,空文本节点是 before div,而您的投诉表明空文本节点是 inside div(在 p 之前) .我认为这只是您的代码示例中的一个小错误?否则,您的示例之前的代码将是相关的。
  • 是的,抱歉,这是一个错误。不,如果我没有require_once,它就不会发生。
  • 您正在加载的 html 文件中是否有空白的前导空格?你可以 trim 通过 file_get_contents() 加载它的内容,而不是如果其中没有解析的 php vars 则包含它。
  • @DeaconDesperado,不,我包含的文件中没有空白空间。

标签: php


【解决方案1】:

FSou1说得对,就是charset,也可以用不带BOM的UTF-8来解决:

  1. 在 Notepad++ 中打开您的 PHP inlcude 文件(在此处下载:http://notepad-plus-plus.org/
  2. 选择编码 --> 不带 BOM 的 UTF-8 编码

空节点消失。希望对某人有所帮助。这让我发疯了。

【讨论】:

  • 简单高效,+1 :-)
【解决方案2】:

我现在遇到了同样的问题,找到答案时我很幸运。答案在字符集中。这可能很奇怪,但是当您将文件保存为 UTF-8 时,您的标记中会出现空白。当你的文件在 cp1251 时,你就没有这个问题了。

【讨论】:

    【解决方案3】:

    这是我的第二个由 BOM 引起的问题(两个都花了一个多小时的调试、谷歌搜索和拉扯)。 我刚刚发现了这个(仅限 Windows)小型拖放程序,可以检查它可以删除的 BOM:

    文件 BOM 检测器,作者 Brynt Younce

    小巧、简单。似乎有一个适用于所有平台的 PHP 解决方案,但我尚未对其进行测试。 有兴趣的可以看看:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-18
      • 2019-03-06
      • 2012-01-13
      • 1970-01-01
      • 2014-06-12
      • 2015-02-16
      • 1970-01-01
      相关资源
      最近更新 更多