0

我有这个代码

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

4 回答 4

5

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

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

如果您要将值输出到标准输出,例如控制台,那么\r\n就是解决方案。如果您正在处理要写入的文件,也是如此。

如果您想将其输出到标准输出然后在 HTML 中,我建议先用 填充它\r\n,输出您的变量,然后使用str_replace此处的文档)将您的所有内容转换\r\n<br/>

$html_problem_text = str_replace('\r\n', '<br/>', $problem_text);
于 2012-11-22T15:24:03.887 回答
3

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

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

于 2012-11-22T15:24:11.287 回答
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";

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

于 2012-11-22T15:32:35.560 回答
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
于 2012-11-22T15:29:25.473 回答