在 Laravel 中借助 erusev/parsedown 包解析 Markdown 文本的正确方式
Laravel 在 5.4 版本中天然包含了将 Markdown 语法转换成 HTML 的工具包 erusev/parsedown
。
它主要的方法有两个:text
和 setMarkupEscaped
。使用方式如下:
echo Parsedown::instance()
->setMarkupEscaped(true)
->text("<div><strong>*Some text*</strong></div>");
# 输出:
# <p><div><strong><em>Some text</em></strong></div></p>
text
指定要转换的 Markdown 文本;setMarkupEscaped
设置为 true
表示转义文本里的 HTML 标签,比如把 <
转换为 <
,以 避免外部脚本攻击。
它在 Laravel 的 Blade 模板文件里是这样使用的:
{!! Parsedown::instance()->setMarkupEscaped(true)->text($discussion->body) !!}
下面举两个例子:
- 当我转义的文本是
<script> console.log('Oops!'); </script>
的时候,被解析为
<p><p><script> console.log('Oops!');</script></p></p>
- 当我转义的文本是
```<script> console.log('Oops!'); </script>```
的时候,被解析为
<p><code><script> console.log('Oops!'); </script></code></p>
更多使用细节,可以查阅这里的 教程。
本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由系统于 6年前 自动加精
推荐文章: