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

Tho*_*abe 68 html php 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);
Run Code Online (Sandbox Code Playgroud)

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

Rob*_*bik 123

在新行字符之前已经nl2br()替换 插入 <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);
?>
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • 请注意,`nl2br`不会替换**,而是在换行之前**INSERTS**,它们在它们之前留下nl个字符和ADDS br. (17认同)

afa*_*zit 59

试试这个

$description = preg_replace("/\r\n|\r|\n/",'<br/>',$description);
Run Code Online (Sandbox Code Playgroud)

  • 更快的替代方案可以是`$ description = str_replace(["\ r \n","\ r","\n"],"<br/>",$ description)`来自[这个答案](http: //stackoverflow.com/a/20717751/2431281) (10认同)
  • (也可以只使用[`/\R /`表示所有CR/LF](https://nikic.github.io/2011/12/10/PCRE-and-newlines.html)换行组合.) (6认同)

reg*_*ero 15

你可能在字符串中有真正的字符"\"(单引号字符串,如@Robik所述).

如果你很确定'\ r'或'\n'字符串也应该被替换,我不是在谈论这里的特殊字符,而是一个两个字符序列'\'和'r',然后逃避'\' '在替换字符串中它将起作用:

str_replace(array("\r\n","\r","\n","\\r","\\n","\\r\\n"),"<br/>",$description);
Run Code Online (Sandbox Code Playgroud)


l2a*_*lba 7

尝试这个:

echo str_replace(array('\r\n', '\n\r', '\n', '\r'), '<br>', $description);
Run Code Online (Sandbox Code Playgroud)

  • 阅读有关 PHP [字符串](http://php.net/manual/en/language.types.string.php) 的信息。[`'\r\n'`](http://php.net/manual/en/language.types.string.php#language.types.string.syntax.single) 与 [`"\ r\n"`](http://php.net/manual/en/language.types.string.php#language.types.string.syntax.double)。 (3认同)

sak*_*atc 6

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

$description = nl2br($description);
Run Code Online (Sandbox Code Playgroud)

更有可能的是,'示例代码第一行上的未闭合导致了您的问题.删除'after $ description ...

...$description');
Run Code Online (Sandbox Code Playgroud)


inf*_*net 6

nl2br() 对我有用,但我需要用双引号将变量括起来:

这有效:

$description = nl2br("$description");
Run Code Online (Sandbox Code Playgroud)

这不起作用:

$description = nl2br($description);
Run Code Online (Sandbox Code Playgroud)