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
投稿
猜你喜欢
- 找到一句可以获得当前最新ID的语句,如下:conn.execute("insert into member (user,code)
- 有时候在一个页面用到收放功能的时候时,总有一个虚线框在触发收放的功能按钮上,显得特别刺眼,那如何去除这个虚线框呢?在IE下,需要在标签 a
- 无论是公司的同事还是外界的程序员朋友们,大部分人对JavaScript的高级应用不甚了解,已有的知识架构里会认为JavaScript仅仅是一
- 交互设计是近几年流行的一个词语。现在市场上有许多资料来介绍什么是交互设计,如何做交互设计等。从场景,任务,用户,操作等分析。但由于受实际情况
- 密码已经是我们生活工作中必不可少的工具,但一个不安全的密码有又有可能会给我们造成不必要的损失。作为网站设计者,如果我们在网页中能对用户输入的
- 刚刚心血来潮,编了一个国际域名查询的功能页面,比较简单,没有做什么美化和修饰,主要利用了服务器端的XMLHTTP访问第三方服务器实现域名查询
- 封装为dll会带来很多的好处,主要包括只是产权的保护,以及效率和安全性能的提升。这个例子中被封装的dll文件可以隐藏access数据库的实际
- 阅读:Dreamweaver量身打造Wordpress留言板(一)虽然说在Dreamweaver量身打造Wordpress留言板(二)这一篇
- 在使用mysql视图是出现问题: The user specified as a definer ('root'@'
- 现在基于WEB页的HTML的编辑器在新闻系统,文章系统中用得越来越广,一个网页一粘就可以保持原来的样式,同时图片也可以在这个页中保持。但是在
- 本文中介绍了一个MySQL的存储过程,其中涉及Cursor的使用,示例如下:CREATE PROCEDURE `justifyGroupNu
- 一、基本思想本文思想是基于用asp和DOM来读取和存储XML数据,并利用XML数据来存储留言信息,达到同用数据库存储数据的功能。二、XML留
- 几个常用装饰器pytest.ini 配置文件 例子:[pytest]addopts = -v -s --html=py_test/scrip
- 位运算,赋值状态时异或对应位数1的整形,判断状态则与运算对应位数1的整形。最大用处就是同时判断32位状态,节省存储空间,便于扩展, 
- 那你也许会问及,怎样获取当前系统日期的最大时间值,如yyyy-MM-dd 23:59:59.997。 我们可以使用DATEADD函数,来实现
- 如何通过表单创建一个Word?举个例子吧,我们先创建一个表单文件docform.htm,再用ASP程序(doccreate.asp)来处理表
- 一提起Google的产品,大多数人可能都会想到用一个词来形容,“简洁”。简单得来又实用,这就是Google的产品设计方针了。Jon Wile
- 相信有很多人有用程序向Excel导数据的需求, 且做过. 一般导出一些文本数据是很方便的, 可选方法很多, 比如拼接文本字符串存.cvs格式
- 索引是以表列为基础的数据库对象。索引中保存着表中排序的索引列,并且纪录了索引列在数据库表中的物理存储位置,实现了表中数据的逻辑排序。通过索引
- 我们在使用ASP 内置的ADO组件进行数据库编程时,通常是在脚本的开头打开一个连接,并在脚本的最后关闭它,但是就较大脚本而言,在多数情况下连