如何将换行符或 \r\n 替换为 <br/>?

2022-08-30 08:01:33

我试图简单地替换一些新行,并尝试了三种不同的方法,但我没有得到任何改变:

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

这些都应该有效,但我仍然得到换行符。它们是双精度的:“\r\r”。这不应该使这些失败,对吧?


答案 1

已经有 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);
?>

但是,如果它仍然不起作用,请确保文本是双引号。$desciption

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

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


答案 2

尝试使用以下命令:

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

推荐