PHP markdown 解析器的结果是字符串,无效 html

Result from PHP markdown parser is string, not valid html

目标

我正在尝试显示 link 用户输入为降价或 html 的描述。描述保存在数据库中,然后在读取时,我试图解析它以显示为 link(而不是文字 markup/markdown)。

问题

我正在使用 HTML Purifier 来解析存储在数据库中的 markdown。当我 运行 字符串通过解析器时,页面上的结果无效 HTML,而是正确的 HTML 只是在一个字符串中。

$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.Allowed', 'a[href]');
$config->set('AutoFormat.Linkify', true);
$config->set('HTML.TargetBlank', true);
$config->set('HTML.TargetNoreferrer', true);

//My database result
$subrow['description'];

$purifier = new HTMLPurifier($config);
printf("<br />%s<br />", $purifier->purify($subrow['description'));

目前输出字面意思是:"A link <a href="https://url.com">my link</a>"

来自 chrome 开发工具的屏幕截图

我认为净化器内部的编码发生了变化...只是猜测,因为我从未使用过它。我能够通过以下方式模拟您的结果:

$test = htmlentities("A link <a href=\"https://url.com/my link\">mylink</a>");
printf('<br />%s<br />', $test);

为了取回有效标记,我使用了 html_entity_decode():

printf('<br />%s<br />', html_entity_decode($test));

尝试

printf("<br />%s<br />", html_entity_decode($purifier->purify($subrow['description'])));

有帮助吗?