我有以下文本(来自 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></p><p> Paragraph3</p>
在结果上应用 Markdown 过滤器(标准 Michelf Markdown 端口)时,在这种情况下它不应该改变任何东西,但它会返回:
<p>paragraph <br /> Newline </p>
<pre><code> <p>
</code></pre>
<p> paragraph2 </p><p></p><p> paragraph3 </p></p>
删除降价过滤器或在 nl2brAndParagraphs 之前应用它时,预格式化会消失。任何人都知道为什么会发生这种情况以及如何解决它?
****编辑:***** 我没有对标准降价代码进行任何更改,我正在使用
function Markdown($text) {
require_once(__DIR__ . '/php-markdown-lib/Michelf/Markdown.inc.php');
require_once(__DIR__ . '/php-markdown-lib/Michelf/MarkdownExtra.inc.php');
return \Michelf\MarkdownExtra::defaultTransform($text);
}
解析字符串。