【发布时间】:2015-08-17 21:00:54
【问题描述】:
我有以下文本(来自 SQL 的字符串):
Paragraph \n Newline \n\n Paragraph2 \n\n\n\n Paragraph3
这一行被处理:
function nl2brAndParagraphs($text) {
$br = nl2br($text);
$data = preg_replace('/^\s*(?:<br\s*\/?>\s*)*/i', '', $br); //Remove any whitespace and br- tags that are at the beginning of the text
$data = preg_replace('/\s*(?:<br\s*\/?>\s*)*$/i', '', $data); //Remove any whitespace and br- tags that are at the end of the text
$data = preg_replace('#(?:<br\s*/?>\s*?){2,}#','</p>
<p>',$data); //Replace multiple line breaks with paragraphs
$data = '<p>'.$data.'</p>';
return $data;
}
这应该返回:
<p>Paragraph <br /> Newline </p><p> Paragraph2 </p><p> Paragraph3</p>
但返回
<p>paragraph1 <br /> Newline </p><p> paragraph2 </p><p></p><p> paragraph3</p>
如何修复 </p><p></p><p> 部分,那里应该只有 </p><p>?
【问题讨论】:
-
pre和code标签从何而来?$data中返回了什么? -
@CarstenHagemann 更新了问题。 - 我之前使用错误的方法查看 $data 的内容。现在我知道 pre-tag 问题是由与 nl2brAndParagraphs 一起使用时的降价引起的。 nl2brAndParagraphs 在第 2 和第 3 段之间仍然返回太多的段落标签
-
你应该打开一个关于降价过滤器的新问题。