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

新手上路,请多包涵

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

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

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

原文由 theflowersoftime 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

已经有 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 是双引号。

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

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

原文由 Robik 发布,翻译遵循 CC BY-SA 4.0 许可协议

尝试使用这个:

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

原文由 afarazit 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏