php换行问题

时间:2012-11-22 15:21:43

标签: php newline

我有这段代码

if($hgroup['groupid'] == $row_groups['groupid']){
  $problem++;
  $hostname=DBfetch($cursor_gethost_again);
  $replace_macro=array('/{HOSTNAME}/','/{HOST.NAME}/');
  $problem_text=$problem_text.$trigger['description'];
  $problem_text=preg_replace($replace_macro,$hostname['name'],$problem_text);
  $problem_text=$problem_text."\r\n";
}

这是一个循环生成的代码。任何人都可以帮助我如何制作那个愚蠢的换行符吗?我必须这样做,因为我正在修改一个代码。所以我想保持这种布局。
它不起作用。它会用文字打印出来。我也尝试preg_replace到<br />

4 个答案:

答案 0 :(得分:5)

如果您尝试打印HTML,新行未使用\r\n,而是附加<br/>

在评论中,您确认您尝试在浏览器中查看此内容。正如Kolink所说,浏览器将空格折叠到一个空格,因此您丢失了新的行信息。

如果要将值输出到标准输出(如控制台),则\r\n是解决方案。如果您正在处理要写入的文件,则同样如此。

如果您想将其输出到标准输出,然后输出到HTML,我建议先将其填入\r\n,输出变量,然后使用str_replace(文档{{3} })将您的所有\r\n转换为<br/>

$html_problem_text = str_replace('\r\n', '<br/>', $problem_text);

答案 1 :(得分:3)

只是猜测一下,你在浏览器中查看输出吗?因为浏览器会将换行符(或任何空格)折叠到单个(水平)空间中。

您需要使用<br />标记在浏览器中创建换行符,或者您可以使用<pre>或某些CSS强制浏览器呈现换行符。

答案 2 :(得分:1)

http://php.net/manual/en/language.types.string.php

\n = CR (Carriage Return) // new line character in Unix
\r = LF (Line Feed) // new line character in Mac OS
\n\r = CR + LF // new line character in Windows

答案 3 :(得分:1)

如果您要用HTML打印:

您可以使用:

$problem_text=$problem_text."<br/>";

如果您愿意,请保留$problem_text=$problem_text."\r\n";,但在输出时,请执行:

nl2br($myvariable);

此功能基本上是“新行到br”,它将新行替换为<br/>,因此您无需在变量中添加"<br/>"

另外,对于您的信息,您可以使用".=",这意味着“将此文本连接到变量:

$problem_text=$problem_text."\r\n";
$problem_text .= "\r\n";

它们的含义相同,同样的规则还有其他运算符,如+ =或 - =算术运算(。=仅用于连接字符串)。