中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

go語言實現markdown解析庫的方法示例

發布時間:2020-08-30 06:33:05 來源:腳本之家 閱讀:211 作者:lu569368 欄目:編程語言

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 }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

含山县| 临沂市| 亳州市| 威海市| 密山市| 交城县| 聂荣县| 茌平县| 阿拉善右旗| 环江| 宁阳县| 金昌市| 陕西省| 林口县| 云浮市| 巧家县| 大埔区| 兴化市| 洛阳市| 远安县| 乐山市| 东兰县| 拉萨市| 南郑县| 镇坪县| 辰溪县| 西林县| 惠东县| 巩义市| 南昌市| 宁阳县| 龙胜| 含山县| 彭州市| 石台县| 清涧县| 淮南市| 乐昌市| 轮台县| 鹤壁市| 灵武市|