0

请问有人能告诉我哪里出错了吗?

//outputs : Hi, my name is Jackal I like PHP
<?php
echo "Hi, my name is Jackal \nI like PHP";
?>

而如果我使用 pre 标签

//outputs: Hi, my name is Jackal
//         I like PHP
<pre>
<?php
echo "Hi, my name is Jackal \nI like PHP";
?>

有人可以解释为什么字符转义不起作用吗?谢谢

4

6 回答 6

2

PHP正在解释该换行符。查看网页的源代码。您会看到源代码中有 2 行。

但是,HTML 处理换行符的方式不同。要在 HTML 中执行换行,请使用<br>标记。这将使网页本身的 HTML 输出超过 2 行。但是,在源代码中,它仍会显示为单行(除非您添加该换行符)。

所做的是<pre>告诉 HTML 引擎按原样输出确切的字符串,因为文本已预先格式化,包括解释该换行符。另请注意,您应该</pre>在预先格式化的块的末尾添加一个结束标记。

于 2013-06-17T11:13:57.343 回答
1

如果你的 HTML 中有这个:

<p>Hello,
World!</p>

它出现在一行还是两行?

通常,答案是一个:空白被压缩成一个空格。

<pre>但是,具有默认 CSS 的white-space:pre,它不会压缩空格。

您应该echo "<br />",或应用white-space:pre(甚至更好,white-space:pre-wrap)容器元素。

于 2013-06-17T11:13:13.850 回答
0

因为在您的浏览器\n中只显示一个空格并且不会显示为换行符,除非您使用预先格式化的 HTML 标签<pre>

例如以下将在浏览器中显示一个换行符:

echo "Hi, my name is Jackal <br />I like PHP";

或者这个也是:

echo "<pre>Hi, my name is Jackal \nI like PHP</pre>";

正如您可以看出,该<pre>标签用于显示预先格式化的文本,因此\n确实显示为换行符。

于 2013-06-17T11:12:35.413 回答
0

字符转义正在工作。查看源代码,在那里你会发现新的一行。为了使其在浏览器中可见,您需要一个 html 标签 ( <br />) 或包装<pre>

于 2013-06-17T11:13:08.497 回答
0
<br> 

是 HTML。

<br />

是 XHTML(推荐)。

\n

是代码中的换行符(在写入文件时工作,但不输出到屏幕)。

或者,您可以使用 nl2br 如下

echo nl2br("Hi, my name is Jackal \nI like PHP");
于 2013-06-17T11:23:28.933 回答
0

php 中的newline字符实际上echo是一个新行本身。

但是,phpecho语句的输出仍然是网络浏览器的源代码。因此,浏览器压缩了所有额外的换行符和空格。例如:

<p>Hello
    there</p>

输出

Hello there

尽管有白色空间。要解决这个问题,请使用<br>/<br/>标签告诉浏览器换行,而不是告诉 php 换行。

于 2013-06-17T11:23:35.710 回答