我真的不明白:新行字符的目的是什么?
如果我这样做:
<?php
echo "This is a test. \n";
echo "This is another test.";
?>
代码导致两个句子在同一行。为什么不是\ n导致第二句在第二行?
如果我这样做的话,句子都在它自己的行中:
<?php
echo "This is a test. <br>";
echo "This is another test.";
?>
但我也看到人们这样做:
<?php
echo "This is a test. <br>\n";
echo "This is another test.";
?>
这实际上导致与第二个代码段相同的输出。有人在乎解释这个吗?
答案 0 :(得分:38)
HTML standard将换行符视为另一个空格字符,这就是<br>
标记存在的原因。但请注意,换行符可以在<pre>
标记内使用,也可以在white-space:pre CSS样式的元素中使用。
第三个例子就是制作“漂亮”的HTML:它可以更容易地“查看源代码”并通过眼睛检查它。否则,你有一大串HTML。
答案 1 :(得分:9)
正如您所观察到的,有不同的方法来创建新行。
<br />
强> 这不是新行字符,这是 XHTML 标记,这意味着它可以在XHTML中使用。 正确地说它不是一个新的行字符,但标签确保,插入一个=它强制换行。结束标记是强制性的。
<br>
强> 这是一个强制换行的HTML标记。禁止关闭标签。
\n
强> 是ASCII新行char LF的转义序列。常见的问题是在使用要求使用ASCII CR + LF结束行的Internet协议进行通信时使用'\ n'。将'\ n'写入文本模式流可以在Windows系统上正常工作,但在Unix上只产生LF,在更奇特的系统上产生完全不同的东西。在二进制模式下使用“\ r \ n”稍微好一点,因为它适用于许多与ASCII兼容的系统,但在一般情况下仍然失败。一种方法是使用二进制模式并直接指定控制序列的数值,“\ x0D \ x0A”。
是一个php新行常量,由正确的系统相关新行替换。
所以消息是,使用它的正确位置。
答案 2 :(得分:6)
<br>
会在用户视图中为您提供一个新行; \n
会在源代码中为您提供一个新行,即。开发者的观点。
答案 3 :(得分:4)
呈现html时,只有“<br />
”呈现中断线。但是,当打印“<br />\n
”时,标记更容易阅读,因此所有内容都不在一条长行中。
答案 4 :(得分:3)
\n
是基于代码的
<br />
是基于HTML标记的
两者之间有明显的区别。
答案 5 :(得分:2)
您的问题是呈现html的方式。如果您查看源代码,第一个示例将在不同的行上有两行,但浏览器不会将换行符视为应显示的断点。这允许您在源中包含一个长段落:
rghruio grgo rhgior hiorghrg hg rgui
ghergh ugi rguihg rug hughuigharug
hruauruig huilugil guiui rui ghruf hf
uhrguihgui rhguibuihfioefhw8u
beruvbweuilweru gwui rgior
只会在浏览器需要时进行换行,允许它在正确的行长度上轻松编辑,但以任何分辨率显示。
答案 6 :(得分:2)
HTML并不关心源代码中的新行,您可以将它们全部放在一行中。它只会将<br />
解释为新行。您应该使用\ n来美化您的HTML输出,但更好的方法是不使用PHP输出它,而是在HTML本身中使用它并且只将PHP内容嵌入其中,如下所示:
<ul id="menu">
<?php foreach ($menu_items as $item): ?>
<li>
<a href="<?= htmlspecialchars($item['link']) ?>" title="<?= htmlspecialchars($item['title']) ?>">
<?= htmlspecialchars($item['title']) ?>
</a>
</li>
<?php endforeach; ?>
</ul>
这样你就不必费心在PHP中进行格式化了,但是你可以通过HTML自动设计它。此外,您将模型逻辑和视图逻辑彼此分离,并将输出保留到HTTP服务器而不是PHP引擎。
答案 7 :(得分:1)
那是因为您正在创建HTML并在浏览器中查看它,并且在那里或多或少地忽略了空格。十个空间不会产生比一个空间更大的间隙,但这并不意味着空间角色不起作用。尝试将内容类型设置为text/plain
或查看HTML源代码以查看换行符的效果。
答案 8 :(得分:1)
正确的XHTML语法是
echo "This is the test code <br />\n";
<br />
在屏幕上呈现新行,“\ n”在源代码中呈现新行
答案 9 :(得分:1)
新行字符非常有用,例如在PDF中。你是正确的,新行字符与其他人所说的HTML几乎没有关系,它被视为另一个空格字符。虽然它在<pre>
标记内很有用。它还可用于格式化HTML输出以使其更易于阅读。 (尝试在1000字符宽的字符串中查找一段HTML时有点烦人。)
在数据库中存储数据时,新行字符也很有用。通常,您希望存储没有HTML特殊字符(如<br />
)的数据,以便可以轻松地以其他格式使用(例如PDF)。在输出时,您希望使用nl2br()
函数将新行转换为<br />
。
答案 10 :(得分:1)
新行字符对字符串函数很有用。
例如:
explode( '\n' , $input );
将字符串拆分为新行。
str_replace( '\n' , '<br />' , $input );
将使用br标记替换$ input中的每个换行符。
另外因为PHP也有CLI,\ n对于格式化非常有用:
例如
echo 'Hello world';
将在CLI中输出;
Hello worldphp&gt;
echo 'Hello world' . "\n";
会输出;
你好世界
PHP&GT;
答案 11 :(得分:1)
虽然它在编写基于Web的脚本时也有用处,但请记住,PHP不仅仅是一个Web引擎;它还有一个CLI,其中br标签是无用的。
答案 12 :(得分:0)
<br />
也没用。
$ php -f file.php
Output <br />$
我知道没有太多人在命令行中使用PHP,但它确实出现了:
file.php:
<?php
print "Output\n";
?>
在命令行:
$ php -f file.php
Output
$