欢迎来到代码驿站!

Golang

当前位置:首页 > 脚本语言 > Golang

go语言实现markdown解析库的方法示例

时间:2021-05-06 09:40:17|栏目:Golang|点击:

Blackfriday是在Go中实现的Markdown处理器。您可以安全地输入用户提供的数据,速度快,支持通用扩展(表,智能标点符号替换等),并且对于所有utf-8(unicode)都是安全的输入。

当前支持HTML输出以及Smartypants扩展。

使用

首先当然要引入:

import github.com/russross/blackfriday

然后

output := blackfriday.MarkdownBasic(input)

这里input是[]byte类型,可以将markdown类型的字符串强转为[]byte,即input = []byte(string)

如果想过滤不信任的内容,使用以下方法:

代码:

package main

import (
  "fmt"

  "github.com/microcosm-cc/bluemonday"
  "github.com/russross/blackfriday"
)

func main() {
  input := []byte("### 5lmh.com是个不错的go文档网站")
  unsafe := blackfriday.MarkdownCommon(input)
  html := bluemonday.UGCPolicy().SanitizeBytes(unsafe)
  fmt.Println(string(html))
}

基本上就这些操作

我的使用方法是在添加新文章时,将表单提交的数据直接通过上面的方法转换后,将markdown和转换后的内容都存储到数据库中

不过我在前端渲染时,又出现了问题,就是转换后的内容中的html标签会直接显示在网页上,为避免这种状况,我使用了自定义模板函数

  // 定义模板函数
  func unescaped(x string) interface{} { return template.HTML(x)}

  // 注册模板函数
  t := template.New("post.html")
  t = t.Funcs(template.FuncMap{"unescaped": unescaped})
  t, _ = t.ParseFiles("templates/post.html")
  t.Execute(w, post)

  // 使用模板函数

  {{ .Content|unescaped }}

上一篇:golang之数据验证validator的实现

栏    目:Golang

下一篇:使用Go添加HTTPS的实现代码示例

本文标题:go语言实现markdown解析库的方法示例

本文地址:http://www.codeinn.net/misctech/115728.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有