PHP 换行符的问题



我有这个代码

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."rn";
}

它是循环生成的代码。谁能帮我如何制作那个愚蠢的换行符?我必须这样做,因为我正在修改一个代码。所以我想保持这种布局。
它不起作用。它将用文本打印它。我也尝试preg_replace <br />.

如果您尝试打印出 HTML,则新行不使用rn而是通过附加<br/> .

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

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

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

$html_problem_text = str_replace('rn', '<br/>', $problem_text);
只是抛

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

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

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
nr = CR + LF // new line character in Windows

如果要以 HTML 打印:

您可以使用:

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

或者如果需要,请保留$problem_text=$problem_text."rn";,但在输出时,请执行:

nl2br($myvariable);

这个函数基本上是"换行到 br",它替换了新行到 <br/>,所以你不需要在你的变量中有"<br/>"

另外,为了您的信息,您可以使用".="表示"将此文本连接到变量:

$problem_text=$problem_text."rn";
$problem_text .= "rn";

它们的意思是一样的,根据相同的规则,还有其他运算符,如 += 或 -= 用于算术运算(.= 仅用于连接字符串)。

最新更新