如何更换换行符或\ r \ n与<br/>?

时间:2011-05-10 06:34:54

标签: php html line-breaks nl2br

尝试简单地替换一些新行。尝试了3种不同的方式,我没有改变:

$description = preg_replace('/\r?\n|\r/','<br/>', $description);
$description = str_replace(array("\r\n","\r","\n"),"<br/>", $description);
$description = nl2br($description);

这些都应该可以工作,但我仍然可以获得换行符。它们是双重的:“\ r \ n”。这不应该使这些失败对吗?

10 个答案:

答案 0 :(得分:116)

已有nl2br()函数替换 插入 <br>代码,然后再换行:

示例(codepad):

<?php
// Won't work
$desc = 'Line one\nline two';
// Should work
$desc2 = "Line one\nline two";

echo nl2br($desc);
echo '<br/>';
echo nl2br($desc2);
?>

但如果仍然无法正常工作,请确保文字$desciption是双引号。

这是因为与双引号字符串相比,单引号不会'扩展'转义序列,例如\n。从PHP文档引用:

  

注意:与双引号和heredoc语法不同,特殊字符的变量和转义序列在单引号字符串中不会扩展。

答案 1 :(得分:57)

尝试使用此

$description = preg_replace("/\r\n|\r|\n/",'<br/>',$description);

答案 2 :(得分:15)

字符串中可能包含真实字符“\”(单引号字符串,如@Robik所述)。

如果您确定'\ r'或'\ n'字符串也应该被替换,我不是说这里的特殊字符,而是两个字符'\'和'r'的序列,然后转义替换字符串中的'\',它将起作用:

str_replace(array("\r\n","\r","\n","\\r","\\n","\\r\\n"),"<br/>",$description);

答案 3 :(得分:5)

nl2br()你应该可以正常工作:

$description = nl2br($description);

您的示例代码第一行中未关闭的'更有可能导致您的问题。删除'after $ description ...

...$description');

答案 4 :(得分:3)

nl2br()为我工作,但我需要用双引号包装变量:

这有效:

$description = nl2br("$description");

这不起作用:

$description = nl2br($description);

答案 5 :(得分:2)

这肯定会有效:

str_replace("\\r","<br />",$description); 
str_replace("\\n","<br />",$description); 

答案 6 :(得分:1)

试试这个:

echo str_replace( array('\r\n','\n\r','\n','\r'), '<br>' , $description );

答案 7 :(得分:1)

$description = nl2br(stripcslashes($description));

答案 8 :(得分:0)

我认为str_replace(array(“ \ r \ n”,“ \ r”,“ \ n”),“”,$ string);将工作。

答案 9 :(得分:-2)

如果您使用的是nl2br,则所有\n\r都会被<br>替换。但如果(我不知道它是怎么回事)你仍然可以使用新线路

str_replace("\r","",$description);
str_replace("\n","",$description);

用空字符串

重新播放不必要的新行
相关问题