\n 和 \r\n 在浏览器中打印时未转义

\n 和 \r\n 在浏览器中打印时未转义

我不确定这是 Ubuntu、Apache 还是 PHP 的问题。

以下基本脚本不会在我的 Firefox 浏览器中呈现新行。

  1. echo "this is not \n creating a new line";
  2. echo "this is not \r\n creating a new line";
  3. echo "this is not creating a new line";

我目前正在学习 PHP,不知道从哪里开始解决这个问题。我从谷歌搜索中了解到,上述 3 个应该可以解决。

这有效

  1. echo "this does <br> create a new line";

我的设置:

Ubuntu 18.04.2
Apache/ 2.4.29 (ubuntu)
PHP 7.3.7-2+ubuntu18.04.1
Fireforx Developer (Quantum) 68.0.1 (64bit)

感谢@cmak.fr 和@Mathieu 的回答。现在更有意义了。在阅读您的回复后,我也找到了此链接https://www.webmasterworld.com/php/3127164.htm

进一步探究后,我发现<pre>标签与 结合使用时也能发挥作用\n。这是为什么呢?

<html>
   <body>
     <h1>Some h1</h1>
     <p>Some text</p>
     <pre>
      <?php
        echo "this is not \n creating a new line";?>
     </pre>
   </body>
</html>

答案1

html 源代码中的换行符在浏览器中不会显示为换行符。
查看生成的 html 页面的源代码,你会发现你的换行符。

换行符的 html 代码<br>

简而言之

<?php echo "\r\n"; ?> // Writes a new line in the output stream
<?php echo "<br>"; ?> // Writes the newline html code

另一个例子:

<php
echo "<html><body>A<br>\r\nB<br>C\r\n</body></html>"
?>

将输出原始文本:

<html><body>A<br>
B<br>C
</body></html>

浏览器将显示此内容

A
B
C

答案2

据我所知,换行是用<br><br />标签进行的。

您可以转换\n<br />nl2br功能:

<?php
    $line = "First line\nSecond line."
    echo nl2br($line);
?>

相关内容