【问题标题】:PHP: trying to create a new line with "\n"PHP:尝试用“\n”创建一个新行
【发布时间】:2011-02-10 02:36:33
【问题描述】:

我在写这个:

echo "foo";
echo "\n";
echo "bar";

并且“bar”没有写在下面一行。

我做错了什么?

贾维

【问题讨论】:

  • 使用浏览器检查输出?
  • 如果您使用的是浏览器,您是否查看了源代码?那就是换行符显示的地方,仅在源代码中。另外,您使用的是什么操作系统?有些需要 \r\n。

标签: php newline


【解决方案1】:

html 元素断行取决于它的white-space 样式属性。 在大多数元素中,默认的white-spaceauto,这意味着当文本到达元素的宽度时换行。 如果你想要 \n 的文本中断,你必须给父元素样式: white space: pre-line,它将读取 \n 并换行,或者 white-space: pre 也将读取 \t 等。 注意:要将\n 写为换行符而不是字符串,您必须使用双引号字符串 ("\n") 如果你不想使用空格,欢迎使用 HTML 元素换行,即<br/>

【讨论】:

    【解决方案2】:
    $a = 'John' ; <br/>
    $b = 'Doe' ; <br/>
    $c = $a.$b"&lt;br/>";
    

    【讨论】:

    • 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。
    【解决方案3】:

    这个答案太明显了,我花了很长时间才弄明白:

    echo "foo
    bar";
    

    我知道它看起来像是在包装。它不是。我所做的是我在字符串的中途按了 return,在foobar 之间。它在 HTML 源代码中创建了一个新行,使您的 PHP 看起来很糟糕。这是在 Linux/Apache 中。

    【讨论】:

      【解决方案4】:

      我们可以在 php 中使用 \n 作为新行。

      代码片段:

       <?php
        echo"Fo\n";
        echo"Pro";
      ?>
      

      输出:


      【讨论】:

        【解决方案5】:

        我们可以使用两种类型在php中应用\n

        1. 使用 CSS

          body {
              white-space: pre-wrap;
          }
          

          告诉浏览器保留空格,以便

          <body>
              <?php
                  echo "Fo\n Pro";
              ?>
          </body>
          

          结果:


        2. 使用nl2br

          nl2br:在字符串中的所有换行符之前插入 HTML 换行符

          <?php
              echo nl2br("Fo.\nPro.");
          ?>
          

          结果

          佛。
          专业版

        【讨论】:

          【解决方案6】:

          HTML 中的换行符通过&lt;br&gt; 表示,而不是通过\n

          在 PHP 中使用\n 会在源代码中创建一个换行符,并且 HTML 源代码布局与 HTML 屏幕布局无关。

          【讨论】:

          • 这是否意味着 $message = "my name \n is TheBump";回显$消息;我叫 TheBump ??
          【解决方案7】:

          这对我来说非常适合......

          echo nl2br("\n");
          

          参考:http://www.w3schools.com/php/func_string_nl2br.asp

          希望对你有帮助:)

          【讨论】:

            【解决方案8】:

            由于没有提到,你也可以使用 CSS white-space 属性

            body{
                white-space:pre-wrap;
            }
            

            告诉浏览器保留空格,以便

            <body>
                <?php
                    echo "hello\nthere";
                ?>
            </body>
            

            会显示

            hello
            there
            

            【讨论】:

              【解决方案9】:

              假设您在网络浏览器中查看输出,您至少有两个选项:

              1. &lt;pre&gt; 语句包围您的文本块

              2. 将您的 \n 更改为 HTML &lt;br&gt; 标记(&lt;br/&gt; 也可以)

              【讨论】:

                【解决方案10】:

                如果你想在纯文本流中插入一个换行符,那么你可以使用独立于操作系统的全局 PHP_EOL

                echo "foo";
                echo PHP_EOL ;
                echo "bar";
                

                在 HTML 术语中,如果您查看页面的源代码,您会在 foo 和 bar 之间看到一个换行符。

                ergo,如果您要输出一个选择框的值循环,并且您重视拥有“更漂亮”或更易于以后自己阅读的 html 源代码,这将很有用。例如

                foreach( $dogs as $dog )
                echo "<option>$dog</option>" . PHP_EOL ;
                

                【讨论】:

                • 我会说echo "&lt;option&gt;$dog&lt;/option&gt;\n"; 比你的可读性强
                • 但它不会独立于操作系统,因此移植性会降低,而且我声称生成的 HTML 源代码更具可读性 - 但实际上我发现包含 PHP_EOL 的行更容易扫描,因为我可以告诉它的去向。
                • 我试过了,但无论如何我都需要使用 \t 来排列 HTML。
                • 这是我发现使 html 源页面可读的唯一方法(包括由 php 代码生成的 javascript,在我的情况下为数组定义),即:调试 javascript 代码。
                【解决方案11】:

                如果您的文本有换行符,请使用 nl2br php 函数:

                <?php
                $string = "foo"."\n"."bar";
                echo nl2br($string);
                ?>
                

                这在浏览器中应该看起来不错

                【讨论】:

                  【解决方案12】:
                  echo "foo<br />bar";
                  

                  【讨论】:

                    【解决方案13】:

                    如果您检查页面的源代码,它将写在新的一行。如果您希望它在浏览器中呈现时出现在新行上,则可以使用 &lt;br /&gt; 标记。

                    【讨论】:

                      【解决方案14】:

                      如果你想写纯文本,你必须确保内容类型设置为Content-Type: text/plain。示例:

                      header('Content-Type: text/plain');
                      

                      如果您正在处理 HTML,您有两种选择。一种是使用&lt;br&gt;(或&lt;br /&gt; 用于XHTML)插入一个新行。另一种是将纯文本放在&lt;pre&gt; 元素中(在这种情况下,“pre”代表预格式化)。

                      【讨论】:

                      • 请解释否决票?很高兴知道我的答案有什么问题,以便我进行更正。
                      【解决方案15】:

                      PHP 生成 HTML。你可能想要:

                      echo "foo";
                      echo "<br />\n";
                      echo "bar";
                      

                      【讨论】:

                      • 那里不需要\n
                      • PHP 不生成 HTML。
                      • 看起来@Hendrik 您从未调试过生成的 HTML 源代码
                      • @Felix 愿意分享您对正确术语的了解吗?
                      • @Col。弹片:当然。 PHP 只输出文本(字符),仅此而已。这取决于您如何处理输出。例如。从命令行运行时,OPs 代码将创建所需的结果。说PHP生成HTML是错误的。
                      猜你喜欢
                      • 1970-01-01
                      • 2020-10-15
                      • 1970-01-01
                      • 2020-02-13
                      • 1970-01-01
                      • 2020-06-19
                      • 2021-01-17
                      • 2018-03-12
                      • 2013-06-07
                      相关资源
                      最近更新 更多