如何用\ 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不必要的新行