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

时间:2017-12-06 17:00:37

标签: php html parsing markdown htmlpurifier

目标

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

问题

我使用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>"

enter image description here

Chrome开发工具的屏幕截图

1 个答案:

答案 0 :(得分:2)

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

$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'])));

这有帮助吗?