我有这个代码
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";
它们的意思是一样的,根据相同的规则,还有其他运算符,如 += 或 -= 用于算术运算(.= 仅用于连接字符串)。