go语言实现markdown解析库的方法示例
作者:lu569368 发布时间:2023-06-20 07:37:32
标签:go,markdown
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 }}
来源:https://studygolang.com/articles/26395
0
投稿
猜你喜欢
- 前言最近发现了一个可以把照片美化的项目,自己玩了玩,挺有意思的,分享一下。Github地址:DPED项目地址下面来看看项目怎么玩?先放一些项
- 使用标准库importlib的import_module()函数、django的import_string(),它们都可以动态加载指定的 P
- 运行vue项目报错 Module build failedModule build failed (from ./node_modules/
- 本文实例为大家分享了python实现名片管理系统的具体代码,供大家参考,具体内容如下功能需求用户输入数字选择要进行的操作添加名片删除名片修改
- 软件版本:python 3.7.2selenium 3.141.0pycharm 2018.3.5具体实现流程如下,废话不多说,直接上代码:
- SQL查询中什么时候需要使用表别名?今天写MySQL时遇到使用表别名的问题,这里重新总结一下。1、 表名很长时select * from w
- 生活中几乎没有什么保证:死亡、税收和需要处理字符串的程序员。字符串可以有多种形式。它们可以是非结构化文本、用户名、产品描述、数据库列名称,或
- (1) os.system仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息system(command) -> exit_
- 一,对应点相乘,x.mul(y) ,即点乘操作,点乘不求和操作,又可以叫作Hadamard product;点乘再求和,即为卷积data =
- 文件的一般操作步骤打开文件或创建新文件:使用相应的编程语言和对应的库或模块打开一个已经存在的文件或者创建新文件。读取文件内容或向文件中写入内
- 在机器学习的时候,当开始就遇到问题,pycharm启动jupyter notebook之后,浏览器前两行代码执行的好好的,后面就不执行了,上
- 切片是 Python 中最迷人最强大最 Amazing 的语言特性(几乎没有之一),在《Python进阶:切片的误区与高级用法》中,我介绍了
- 前言有时候正则表达式不只是匹配一下什么数字/邮箱/身份证/日期等等,还需要匹配某一段文字,并按照既定格式提取其中的某些值.场景一:提取SAM
- 字典d = {key1 : value1, key2 : value2, key3 : value3 }键必须是唯一的,但值则不必。值可以取
- 用python实现文件夹下的成批文件格式转换我们对于文件转换的需求很大,甚至于对于图片的格式,JPG和PNG格式在肉眼看来都没什么差别,但是
- 创建临时表,往临时表插入数据的时候报的错误。一开始提示没有打开主键,后来打开主键就提示上述错误异常。从网上查找资料没有找到,然后又到群里问各
- 一 、精灵(Sprite),屏幕上的对象。精灵组是精灵的组合。创建空的精灵组对象:精灵组可以对其中的所有精灵调用它们各自的更新方法(self
- 每次写博客都是源于纳闷,python解析pcap这么常用的例子网上竟然没有,全是一堆命令行执行的python,能用吗?玩呢?pip安装sca
- 在Flash播放器运行时,将不同来源的资源划分到独立的沙箱(sandbox)内,不同沙箱之间不能彼此操作数据(除非目标沙箱做过一些设置,授权
- 简单的说延迟复制就是设置一个固定的延迟时间,比如1个小时,让从库落后主库一个小时。MySQL延时复制库作用存在即合理,延迟复制可以用来解决以