Php 新行字符有什么好处?

Php 新行字符有什么好处?,php,html,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. \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.";
?> 

这基本上会产生与第二个代码段相同的输出。有人想解释一下吗?

将换行符视为另一个空格字符,这就是

标记存在的原因。但是请注意,换行符将在
标记或具有CSS样式的元素中工作

rghruio grgo rhgior hiorghrg hg rgui  
ghergh ugi rguihg rug hughuigharug 
hruauruig huilugil guiui rui ghruf hf 
uhrguihgui rhguibuihfioefhw8u 
beruvbweuilweru gwui  rgior

第三个例子就是制作“漂亮”的HTML:它使“查看源代码”和肉眼检查变得更容易。否则,您将有一个很长的HTML字符串。


将在用户视图中为您提供一个新行<代码>\n将为您提供源代码中的新行,即开发者视图。

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

echo 'Hello world' . "\n";

这不是一个新的行字符,这是一个XHTML标记,这意味着它在XHTML中工作。 正确地说,它不是新行字符,但标记确保插入一个=它强制换行。结束标记是必需的



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


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


PHP\u EOL 是一个php新行常量,由正确的系统相关新行替换

echo 'Hello world' . "\n";

因此,要传达的信息是,在正确的位置使用所有内容。

您的问题在于html的呈现方式。如果查看源代码,第一个示例将两行放在单独的行上,但浏览器不会将换行符视为应该显示的换行符。这允许您在源代码中有一个较长的段落:

echo "This is the test code <br />\n";

这只会根据浏览器的需要进行换行,允许以正确的行长度轻松编辑,但可以以任何分辨率显示。

呈现html时,只有“

”呈现换行符。但是,当打印“

\n
”时,标记更易于阅读,因此所有内容都不会排在一行中。

这是因为您正在创建HTML并在浏览器中查看它,而其中的空白或多或少会被忽略。十个空格不会产生比一个空格更大的间距,但这并不意味着空格字符不起作用。尝试将内容类型设置为
text/plain
或查看HTMLs源代码以查看换行符的效果。

正确的XHTML语法是

<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>
echo“这是测试代码
\n”;


在屏幕上呈现新行,“\n”在源代码中呈现新行

HTML不关心源代码中的新行,您可以将其全部放在一行中。它只会将

解释为新行。您应该使用\n来美化HTML输出,但更好的方法是不要使用PHP输出,而是在HTML本身中使用它,并且只将PHP内容嵌入其中,如下所示:

   explode( '\n' , $input );

这样,您就不必费心在PHP内部进行格式化,但您可以自动地将其设计成HTML格式。此外,您可以像这样将模型逻辑和视图逻辑彼此分离,并将输出留给HTTP服务器而不是PHP引擎。

否则,新行字符很有用,例如在PDF中。正如其他人所说,新行字符与HTML关系不大,它被视为另一个while-space字符。尽管它在
标记中很有用。它还可以用于格式化HTML输出,使其更易于阅读。(试图在1000个字符宽的字符串中找到一段HTML有点烦人。)

str_replace( '\n' , '<br />' , $input );

在数据库中存储数据时,新行字符也很有用。通常,您希望存储不带HTML特殊字符(如

)的数据,以便可以轻松地在其他格式(同样,如PDF)中使用。在输出时,您希望使用
nl2br()
函数将新行转换为

s。

\n
是基于代码的


是基于HTML标记的


两者之间有明显的区别。

新行字符对于字符串函数很有用

例如:

echo 'Hello world';
将字符串拆分为新行

echo 'Hello world' . "\n";
将在CLI中显示输出

您好worldphp>

将输出

你好,世界
php>


尽管它在编写基于web的脚本时也有用途,但请记住PHP不仅仅是一个web引擎;它还有一个CLI,其中br标记是无用的。


如果从命令行运行脚本,则该命令也无用

$ php -f file.php
Output
$ 

你确定你检查了你的代码样本是否正确显示了吗???你可能想编辑你的问题,因为我认为你的意思是:“代码导致两个句子在同一行。”这是错误的。HTML代码将有一个换行符。浏览器显示的HTML输出不会影响您对用户视图和开发的区分