【问题标题】:PHP Tag Removes Last Newline in DocumentPHP 标记删除文档中的最后一个换行符
【发布时间】:2012-07-30 14:44:49
【问题描述】:

这个问题纯粹是为了有整洁的 HTML 代码输出。

在一个简单的 PHP 文件中,您可以使用标签选择何时将 PHP 嵌入到文档中。然而,当这个标签直接用在常规 HTML 元素之上时,分隔两者的换行符显然被删除或忽略了。

在 PHP 中观察以下代码

<div>
<?php echo "This is some extra text." ?>
</div>

输出如下

<div>
This is some extra text.</div>

但是,如果我直接在标签之后添加一些东西,

<div>
<?php echo "This is some extra text." ?> Now the newline is honored.
</div>

看来换行符被接受了:

<div>
This is some extra text. Now the newline is honored.
</div>

同样,这纯粹是一个外观问题,与错误地呈现页面无关。我希望源代码美观且易读,并且可以肯定我可以在第一个 echo 末尾添加“\n”字符,但这并不令人满意,而且会很烦人。有什么办法可以解决这个问题,还是我做错了什么?

【问题讨论】:

  • 使用模板引擎,例如 Twig 应该可以防止这种行为。

标签: php html formatting newline


【解决方案1】:

这是 PHP 长期存在的问题。基本上,如果你的关闭标签后面有一个换行符,PHP 会吃掉它。但是,如果在结束标记之后有其他字符(甚至是空格),那么它之后的任何换行符都会受到尊重。

例如

<?php echo "Hello"; ?>\nWorld

产生:

HelloWorld

<?php echo "Hello"; ?>\n\nWorld

产生:

Hello⏎
World

然而,

<?php echo "Hello"; ?> \nWorld

生产

Hello ⏎
World

所以解决方法是记住在每个块的输出末尾添加一个换行符,或者在结束标记和它之后的换行符之间插入一个空格。

【讨论】:

  • 如果你想知道why
【解决方案2】:

尝试强制换行:

<div>
<?php echo "This is some extra text." ?>

</div>

【讨论】:

    【解决方案3】:

    \n 字符对您来说是不可见的,但是当您在之后添加额外的文本时,您会按回车键。

    如果您希望添加的文本具有换行符,只需执行以下操作:

    <?php echo "This is some extra text.\n" ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-11
      • 1970-01-01
      • 1970-01-01
      • 2022-11-22
      • 1970-01-01
      • 1970-01-01
      • 2018-11-25
      相关资源
      最近更新 更多