Markdown过滤器使用PHP / HTML中的预标记包装段落标记

时间:2015-08-18 11:03:50

标签: php markdown paragraphs

我有以下文本(来自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>    &lt;p&gt;
</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);
}

解析字符串。

0 个答案:

没有答案