新行字符有什么用?

时间:2009-02-16 21:09:41

标签: php html

我真的不明白:新行字符的目的是什么?

如果我这样做:

<?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.";
?> 

这实际上导致与第二个代码段相同的输出。有人在乎解释这个吗?

13 个答案:

答案 0 :(得分:38)

HTML standard将换行符视为另一个空格字符,这就是<br>标记存在的原因。但请注意,换行符可以在<pre>标记内使用,也可以在white-space:pre CSS样式的元素中使用。

第三个例子就是制作“漂亮”的HTML:它可以更容易地“查看源代码”并通过眼睛检查它。否则,你有一大串HTML。

答案 1 :(得分:9)

正如您所观察到的,有不同的方法来创建新行。

<br />

这不是新行字符,这是 XHTML 标记,这意味着它可以在XHTML中使用。 正确地说它不是一个新的行字符,但标签确保,插入一个=它强制换行。结束标记是强制​​性的。

XHTML specs


<br>

这是一个强制换行的HTML标记。禁止关闭标签。

HTML 4.1 specs


\n

是ASCII新行char LF的转义序列。常见的问题是在使用要求使用ASCII CR + LF结束行的Internet协议进行通信时使用'\ n'。将'\ n'写入文本模式流可以在Windows系统上正常工作,但在Unix上只产生LF,在更奇特的系统上产生完全不同的东西。在二进制模式下使用“\ r \ n”稍微好一点,因为它适用于许多与ASCII兼容的系统,但在一般情况下仍然失败。一种方法是使用二进制模式并直接指定控制序列的数值,“\ x0D \ x0A”。

read more


PHP_EOL

是一个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
$