Go语言解析markdown

幸运草
幸运草
幸运草
925
文章
3
评论
2020年4月22日22:01:08 评论 158
1 概述2 安装 Blackfriday3 解析 MarkDown 内容4 安全过滤安装使用

1 概述

Markdown 是一种轻量级的标记语言。设计的目的是通过简单、轻量级的方式来添加格式,而不需要使用 HTML。

相关文档如下:

  • Markdown语法文档
  • Markdown语法文档(官方)
  • Markdown语法文档(翻译)

2 安装 Blackfriday

Go 语言中解析 MarkDown 最知名的库就是 russross/blackfriday 了。github 地址为:russross/blackfriday。

下面的命令可以将 russross/blackfriday 安装到 GOPATH 所设置的目录:

go get -u gopkg.in/russross/blackfriday.v2

3 解析 MarkDown 内容

使用函数 func Run(input []byte, opts ...Option) []byte 完成 MarkDown 的解析,演示如下:

// 通用的解析方式
output := blackfriday.Run(input)

// 若仅需要最基本的功能,使用 blackfriday.WithNoExtensions() 选项
output := blackfriday.Run(input, blackfriday.WithNoExtensions())

4 安全过滤

blackfriday 库仅实现了 MarkDown 的解析,没有做关于安全注入方面的过滤。若不能保证待解析的内容安全性,例如来自于用户提供的内容,则需要进行内容过滤来保证安全。推荐使用 microcosm-cc/bluemonday 完成。项目 github 地址:microcosm-cc/bluemonday

安装

下面的命令可以将 microcosm-cc/bluemonday 安装到 GOPATH 所设置的目录:

go get -u github.com/microcosm-cc/bluemonday

使用

使用过程如下:

import (
    "github.com/microcosm-cc/bluemonday"
    "gopkg.in/russross/blackfriday.v2"
)

// 利用 bluemonday 解析
html := bluemonday.UGCPolicy().SanitizeBytes(unsafe)

特别声明:以上文章内容仅代表作者本人观点,不代表变化吧观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与变化吧联系。

转载请注明:{{title}}-变化吧
  • 赞助本站
  • 微信扫一扫
  • weinxin
  • 赞助本站
  • 支付宝扫一扫
  • weinxin
幸运草
Go语言中的常量 函数代码

Go语言中的常量

1 概述 常量,一经定义不可更改的量。功能角度看,当出现不需要被更改的数据时,应该使用常量进行存储,例如圆周率。从语法的角度看,使用常量可以保证数据,在整个运行期间内,不会被更改。例如当前处理器的架构...
Go语言的接口 函数代码

Go语言的接口

Go语言-接口 在Go语言中,一个接口类型总是代表着某一种类型(即所有实现它的类型)的行为。一个接口类型的声明通常会包含关键字type、类型名称、关键字interface以及由花括号包裹的若干方法声明...
Go语言支持的正则语法 函数代码

Go语言支持的正则语法

1 字符 语法 说明 . 任意字符,在单行模式(s标志)下,也可以匹配换行 字符类 否定字符类 d Perl 字符类 D 否定 Perl 字符类 ASCII 字符类 否定 ASCII 字符类 pN U...
Go语言的包管理 函数代码

Go语言的包管理

1 概述 Go 语言的源码复用建立在包(package)基础之上。包通过 package, import, GOPATH 操作完成。 2 main包 Go 语言的入口 main() 函数所在的包(pa...