如何用\ r&\ nreplace为?

试图简单地replace一些新的线路。 已经尝试了3种不同的方式,我没有任何改变:

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

这些都应该工作,但我仍然得到换行符。 他们是双重的:“\ r \ r”。 这不应该使任何这些失败的权利?

已经有nl2br()函数在换行符之前replace 插入 <br>标签:

示例( 键盘 ):

 <?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是双引号。

这是因为与双引号string相比,单引号不会“扩展”转义序列,如\n 。 从PHP文档引用:

注意 :与双引号和heredoc语法不同,特殊字符的variables和转义序列在单引号string中不会被展开。

尝试使用这个

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

你可能在string中有真实的字符“\”(单引号string,如@Robik)。

如果你确定'\ r'或者'\ n'这个string应该被replace掉,我不是在这里谈论特殊字符,而是两个字符'\'和'r'的序列,然后从\ '在replacestring,它会工作:

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

nl2br()因为你有它应该工作正常:

 $description = nl2br($description); 

在您的示例代码的第一行更有可能导致您的问题。 删除'后$描述…

 ...$description'); 

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

这工作:

 $description = nl2br("$description"); 

这不起作用:

 $description = nl2br($description); 

尝试这个:

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

这将肯定工作:

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

如果您正在使用nl2br所有出现的\n\r将被replace为。 但如果(我不知道它是如何的),你仍然可以使用新的线

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

用空stringreplace不必要的新行

Interesting Posts