我正在尝试将用户输入的链接显示为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>"
Chrome开发工具的屏幕截图
答案 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'])));
这有帮助吗?