【发布时间】:2011-02-10 02:36:33
【问题描述】:
我在写这个:
echo "foo";
echo "\n";
echo "bar";
并且“bar”没有写在下面一行。
我做错了什么?
贾维
【问题讨论】:
-
使用浏览器检查输出?
-
如果您使用的是浏览器,您是否查看了源代码?那就是换行符显示的地方,仅在源代码中。另外,您使用的是什么操作系统?有些需要 \r\n。
我在写这个:
echo "foo";
echo "\n";
echo "bar";
并且“bar”没有写在下面一行。
我做错了什么?
贾维
【问题讨论】:
html 元素断行取决于它的white-space 样式属性。
在大多数元素中,默认的white-space 是auto,这意味着当文本到达元素的宽度时换行。
如果你想要 \n 的文本中断,你必须给父元素样式:
white space: pre-line,它将读取 \n 并换行,或者
white-space: pre 也将读取 \t 等。
注意:要将\n 写为换行符而不是字符串,您必须使用双引号字符串 ("\n")
如果你不想使用空格,欢迎使用 HTML 元素换行,即<br/>
【讨论】:
$a = 'John' ; <br/>
$b = 'Doe' ; <br/>
$c = $a.$b"<br/>";
【讨论】:
这个答案太明显了,我花了很长时间才弄明白:
echo "foo
bar";
我知道它看起来像是在包装。它不是。我所做的是我在字符串的中途按了 return,在foo 和bar 之间。它在 HTML 源代码中创建了一个新行,使您的 PHP 看起来很糟糕。这是在 Linux/Apache 中。
【讨论】:
我们可以在 php 中使用 \n 作为新行。
<?php
echo"Fo\n";
echo"Pro";
?>
输出:
佛
亲
【讨论】:
我们可以使用两种类型在php中应用\n
使用 CSS
body {
white-space: pre-wrap;
}
告诉浏览器保留空格,以便
<body>
<?php
echo "Fo\n Pro";
?>
</body>
结果:
佛
亲
使用nl2br
nl2br:在字符串中的所有换行符之前插入 HTML 换行符
<?php
echo nl2br("Fo.\nPro.");
?>
结果
佛。
专业版
【讨论】:
HTML 中的换行符通过<br> 表示,而不是通过\n。
在 PHP 中使用\n 会在源代码中创建一个换行符,并且 HTML 源代码布局与 HTML 屏幕布局无关。
【讨论】:
【讨论】:
由于没有提到,你也可以使用 CSS white-space 属性
body{
white-space:pre-wrap;
}
告诉浏览器保留空格,以便
<body>
<?php
echo "hello\nthere";
?>
</body>
会显示
hello
there
【讨论】:
假设您在网络浏览器中查看输出,您至少有两个选项:
用<pre> 语句包围您的文本块
将您的 \n 更改为 HTML <br> 标记(<br/> 也可以)
【讨论】:
如果你想在纯文本流中插入一个换行符,那么你可以使用独立于操作系统的全局 PHP_EOL
echo "foo";
echo PHP_EOL ;
echo "bar";
在 HTML 术语中,如果您查看页面的源代码,您会在 foo 和 bar 之间看到一个换行符。
ergo,如果您要输出一个选择框的值循环,并且您重视拥有“更漂亮”或更易于以后自己阅读的 html 源代码,这将很有用。例如
foreach( $dogs as $dog )
echo "<option>$dog</option>" . PHP_EOL ;
【讨论】:
echo "<option>$dog</option>\n"; 比你的可读性强
如果您的文本有换行符,请使用 nl2br php 函数:
<?php
$string = "foo"."\n"."bar";
echo nl2br($string);
?>
这在浏览器中应该看起来不错
【讨论】:
echo "foo<br />bar";
【讨论】:
如果您检查页面的源代码,它将写在新的一行。如果您希望它在浏览器中呈现时出现在新行上,则可以使用 <br /> 标记。
【讨论】:
如果你想写纯文本,你必须确保内容类型设置为Content-Type: text/plain。示例:
header('Content-Type: text/plain');
如果您正在处理 HTML,您有两种选择。一种是使用<br>(或<br /> 用于XHTML)插入一个新行。另一种是将纯文本放在<pre> 元素中(在这种情况下,“pre”代表预格式化)。
【讨论】:
PHP 生成 HTML。你可能想要:
echo "foo";
echo "<br />\n";
echo "bar";
【讨论】: