我有这个代码
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 />。
发布于 2012-11-22 23:24:04
如果你想打印出超文本标记语言,新行不是使用\r\n,而是附加<br/>。
在一条评论中,您确认您正尝试在浏览器中查看此内容。正如Kolink所说,浏览器将空格折叠为一个空格,因此您会丢失新行信息。
如果要将值输出到标准输出,如控制台,那么\r\n就是解决方案。如果您正在处理要写入的文件,情况也是如此。
如果您想将其同时输出到标准输出,然后再输出为HTML语言,我建议首先用\r\n填充它,输出您的变量,然后使用str_replace (documentation here)将您所有的\r\n转换为<br/>
$html_problem_text = str_replace('\r\n', '<br/>', $problem_text);发布于 2012-11-22 23:24:11
只是猜测一下,您是在浏览器中查看输出吗?因为浏览器将换行符(或任何空格)折叠成一个(水平)空格。
您需要使用CSS标记在浏览器中创建一个换行符,或者您可以使用<pre>或一些<br />来强制浏览器这样呈现换行符。
发布于 2012-11-22 23:29:25
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 Windowshttps://stackoverflow.com/questions/13515745
复制相似问题