【问题标题】:Using end of line in PHP echo string在 PHP 回显字符串中使用行尾
【发布时间】:2011-09-25 02:04:45
【问题描述】:

我正在尝试编写一个 echos 字符串的 PHP 脚本,但它无法识别其中的行尾函数。

例如,

echo "thank you \n "
echo "for coming over"

\n 被忽略,它将整行打印为thank you for coming over

我得到了以下相同的结果:

echo "thank you " . PHP_EOL.;
echo "for coming over" . PHP_EOL.;

【问题讨论】:

  • 尝试插入<br>
  • 查看你的源代码,你会看到新行已经插入。只是浏览器忽略了换行。
  • 您是输出到浏览器还是命令行(或其他地方)?因为浏览器会忽略空格,包括换行符,除非在某些标签中或存在某些样式时。你需要澄清你的问题。下面的大多数答案都假设您正在输出到浏览器。
  • 为什么PHP_EOL后面的点?

标签: php


【解决方案1】:

有不同的方法来解决这个问题:

使用预格式化文本

echo '<pre>'; // pre-formatted text, \n should work
echo "thank you \n ";
echo "for coming over";
echo '</pre>';

更改内容类型

header('Content-Type: text/plain');
echo "thank you \n ";
echo "for coming over";

您的浏览器现在可以正确地将输出读取为文本。

使用 HTML 中断元素

echo "thank you <br>\n ";
echo "for coming over";

所以输出总是取决于你想输出什么。是文字吗?它是 HTML 吗?它是 HTML 中的一些文本吗?根据您的需要,您应该注意格式和格式。

【讨论】:

  • 我刚刚修复了你的代码(缺少 ; 和 ),希望没问题。
  • 使用预格式化文本相关,white-spacecss属性也可以使用。
【解决方案2】:

如果您在浏览器中执行此操作,请将 \n 替换为 &lt;br /&gt;。文件换行符不会在 HTML 页面中呈现,除非通过 CSS 指定或它们包含在某些标记中。您也可以选择将文件类型更改为text/plain,但我认为这不是我们所希望的。

【讨论】:

  • nl2br() 函数会自动为您执行此操作。
【解决方案3】:

试试这个 通常你可以使用

 echo "thank you <br>";
 echo "for coming over<br>";

在文件处理时

echo "thank you ".PHP_EOL."";
echo "for coming over".PHP_EOL."";

【讨论】:

    【解决方案4】:

    如果你想在 html 中打印包含 eol 的文本,给nl2br 一个机会

    $str = "thank you \n ";
    $str .= "for coming over";
    nl2br($str);
    

    它将在所有 eol 之前添加 HTML 换行符。

    【讨论】:

      【解决方案5】:

      从浏览器检查网页的来源,会有一个新行。由于在 HTML 中,换行符、制表符或空格等空格会被忽略,因此您无法在浏览器中看到它们。您需要使用&lt;br /&gt;&amp;nbsp; 等来打印您想要的内容。

      【讨论】:

        猜你喜欢
        • 2015-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-28
        • 2023-04-03
        相关资源
        最近更新 更多