我有一个由包含电子邮件正文的 Solr 查询检索的文本字段。我正在尝试通过 PHP 用段落标记替换嵌入的换行符,如下所示:
$text = $item->Body[0];
$new_line = array("\r\n", "\n", "\r");
preg_replace($new_line, '</p><p>', $text);
echo $text;
Run Code Online (Sandbox Code Playgroud)
当我在 IDE/调试器中显示结果时,换行符不会被替换并且仍然存在:
我一直在浏览这个站点上的线程,尝试不同人建议的模式,包括“/\s+/”和 PHP_EOL 和“/(\r\n|\r|\n)/”,但没有任何效果。我究竟做错了什么?
您缺少正则表达式字符串周围的分隔符,并且您没有分配该值。
您还可以减少您的正则表达式:
$text = preg_replace("/\r?\n|\r/", '</p><p>', $text);
Run Code Online (Sandbox Code Playgroud)
您可能希望切换到多字节安全版本。它们使用 Unicode,您不需要分隔符;)
$text = mb_ereg_replace("\r?\n|\r", '</p><p>', $text);
Run Code Online (Sandbox Code Playgroud)