【问题标题】:PHP Linefeeds (\n) Not WorkingPHP 换行符 (\n) 不工作
【发布时间】:2011-03-02 06:09:41
【问题描述】:

由于某种原因,在使用 PHP 输出到文件时,我无法使用 \n 创建换行符。它只是将“\n”写入文件。我也尝试过使用“\\n”,它只写“\n”(如预期的那样)。但我一生都无法弄清楚为什么在我的字符串中添加 \n 不会创建新行。我也尝试过\r\n,但它只是将“\r\n”附加到文件中的行。

例子:

error_log('test\n', 3, 'error.log');
error_log('test2\n', 3, 'error.log');

输出:

test\ntest2\n

在 OSX 上使用 MAMP 以防万一(可能是某种 PHP 配置?)。

有什么建议吗?

【问题讨论】:

    标签: php newline


    【解决方案1】:

    使用双引号。 "test\n" 可以正常工作(或者,使用 'test' . PHP_EOL)。

    如果字符串用双引号 (") 括起来,PHP 将为特殊字符解释更多的转义序列:

    http://php.net/manual/en/language.types.string.php

    【讨论】:

    • 使用单引号不会将值更改为实体,因此您必须使用双引号! +1
    • 你怎么能在不到 2 分钟的时间内给出如此完整的答案?那是我独自阅读问题的时间! :o
    【解决方案2】:

    这是因为您使用了撇号 (')。请改用引号 (")。' 提示 PHP 使用撇号之间的字面意思。

    【讨论】:

      【解决方案3】:

      您需要使用双引号。双引号有更多的转义字符。

      error_log("test\n", 3, 'error.log');
      error_log("test2\n", 3, 'error.log');
      

      【讨论】:

        【解决方案4】:

        双引号是你想要的。单引号忽略 \ 转义。双引号也会为你计算变量表达式。

        查看 php 手册中的this page 了解更多信息。

        【讨论】:

          【解决方案5】:

          我很确定您正在输出到一个 html 文件。 问题是 html 会忽略源代码中的换行符,这意味着如果您想在结果页面显示中使用换行符,则必须将换行符替换为 <br/>

          【讨论】:

            【解决方案6】:

            \n 不应被最终用户视为新行,您必须为此使用 html <br/> 元素。 /n 只影响 php 生成的 html 在网页源代码中的显示方式。如果您访问您的网页并单击“查看源代码”,您将看到 php 生成的 html 为一长行。不漂亮。这就是\n 用于 ; 将 php 生成的 html 分解为较短的行。 \n 的目的是做一个更漂亮的“查看源代码”页面。

            【讨论】:

            • 为什么它的目标是'查看源'页面而不是网页输出?
            • @IstiaqueAhmed 因为它不会在受影响的网页源代码中生成 html 代码
            【解决方案7】:

            \n 放在双引号中试试


            $LOG = str_replace('\n', "\n", $LOG);
            

            【讨论】:

              【解决方案8】:

              nl2br() 函数用于创建新行

              echo nl2br("Welcome\r\n This is my HTML document", false);
              

              上面的例子会输出:

              欢迎
              这是我的 HTML 文档

              【讨论】:

                【解决方案9】:

                当您在浏览器中运行 PHP 脚本时,默认情况下它将呈现为 HTML。如果您使用的书籍另有显示,则代码或插图不准确。您可以使用“查看源代码”查看发送到浏览器的内容,您会看到换行符存在。

                <?php
                echo "Line 1\nLine 2";
                ?>
                

                这将在您的浏览器中呈现为:

                Line 1 Line 2
                

                如果你需要向浏览器发送纯文本,你可以使用类似的东西:

                <?php
                header('Content-type: text/plain');
                echo "Line 1\nLine 2";
                ?>
                

                这将输出:

                Line 1
                Line 2
                

                【讨论】:

                  【解决方案10】:

                  如果你想打印这样的内容,后面有一个换行符 (\n):

                  <p id = "theyateme">Did it get eaten?</p>
                  

                  要打印上述内容,您应该这样做:

                  <?php
                    print('<p id = "theyateme">Did it get eaten?</p>' . "\n");
                  ?>
                  

                  上面的客户端代码是:

                  <p id = "theyateme">Did it get eaten?</p>
                  

                  上面的输出是:

                  被吃了吗?

                  我知道这很难,但我总是那样做,而 几乎总是不得不那样做。 p>

                  有时您希望 PHP 将 \n 打印到页面而不是换行符,就像在 JavaScript 代码(由 PHP 生成)中一样。

                  关于答案的注意事项:您可能会喜欢:为什么使用 print 而不是 echo(我喜欢我的 echo)。那是因为我更喜欢 print 而不是 echo 和 printf,因为它在某些情况下效果更好(通常是我的情况),但在这种情况下使用 echo 可以很好地完成。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2018-03-09
                    • 1970-01-01
                    • 2022-01-25
                    • 1970-01-01
                    • 2013-08-08
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多