尝试简单地替换一些新行。尝试了3种不同的方式,我没有改变:
$description = preg_replace('/\r?\n|\r/','<br/>', $description);
$description = str_replace(array("\r\n","\r","\n"),"<br/>", $description);
$description = nl2br($description);
这些都应该可以工作,但我仍然可以获得换行符。它们是双重的:“\ r \ n”。这不应该使这些失败对吗?
答案 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);
用空字符串
重新播放不必要的新行