mirror of
https://gitee.com/johng/gf
synced 2026-06-24 00:40:38 +08:00
模板引擎增加text/html方法,用于过滤html标签及保留html标签
This commit is contained in:
@ -48,7 +48,7 @@ func (r *Response) ParseTpl(tpl string, params map[string]interface{}, funcmap..
|
||||
if len(funcmap) > 0 {
|
||||
fmap = funcmap[0]
|
||||
}
|
||||
return gins.View().Parse(tpl, r.buildInVars(params), r.buildInfuncs(fmap))
|
||||
return gins.View().Parse(tpl, r.buildInVars(params), r.buildInFuncs(fmap))
|
||||
}
|
||||
|
||||
// 解析并返回模板内容
|
||||
@ -57,7 +57,7 @@ func (r *Response) ParseTplContent(content string, params map[string]interface{}
|
||||
if len(funcmap) > 0 {
|
||||
fmap = funcmap[0]
|
||||
}
|
||||
return gins.View().ParseContent(content, r.buildInVars(params), r.buildInfuncs(fmap))
|
||||
return gins.View().ParseContent(content, r.buildInVars(params), r.buildInFuncs(fmap))
|
||||
}
|
||||
|
||||
// 内置变量
|
||||
@ -72,7 +72,7 @@ func (r *Response) buildInVars(params map[string]interface{}) map[string]interfa
|
||||
}
|
||||
|
||||
// 内置函数
|
||||
func (r *Response) buildInfuncs(funcmap map[string]interface{}) map[string]interface{} {
|
||||
func (r *Response) buildInFuncs(funcmap map[string]interface{}) map[string]interface{} {
|
||||
if funcmap == nil {
|
||||
funcmap = make(map[string]interface{})
|
||||
}
|
||||
|
||||
@ -78,6 +78,7 @@ func New(path string) *View {
|
||||
view.SetDelimiters("{{", "}}")
|
||||
// 内置方法
|
||||
view.BindFunc("text", view.funcText)
|
||||
view.BindFunc("html", view.funcHtml)
|
||||
view.BindFunc("include", view.funcInclude)
|
||||
return view
|
||||
}
|
||||
@ -168,3 +169,9 @@ func (view *View) funcText(html interface{}) string {
|
||||
return ghtml.StripTags(gconv.String(html))
|
||||
}
|
||||
|
||||
// 模板内置方法:html
|
||||
func (view *View) funcHtml(html interface{}) template.HTML {
|
||||
return template.HTML(gconv.String(html))
|
||||
}
|
||||
|
||||
|
||||
|
||||
24
geg/os/gview/func_html/func_html.go
Normal file
24
geg/os/gview/func_html/func_html.go
Normal file
@ -0,0 +1,24 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"gitee.com/johng/gf/g/os/gview"
|
||||
"gitee.com/johng/gf/g"
|
||||
)
|
||||
|
||||
func main() {
|
||||
if c, err := gview.ParseContent(`{{"<div>测试</div>模板引擎默认处理HTML标签<script>alert(\"test\");</script>\n"}}`, nil); err == nil {
|
||||
g.Dump(c)
|
||||
} else {
|
||||
g.Dump(c)
|
||||
}
|
||||
if c, err := gview.ParseContent(`{{"<div>测试</div>去掉HTML标签<script>alert(\"test\");</script>\n"|text}}`, nil); err == nil {
|
||||
g.Dump(c)
|
||||
} else {
|
||||
g.Dump(c)
|
||||
}
|
||||
if c, err := gview.ParseContent(`{{"<div>测试</div>保留HTML标签<script>alert(\"test\");</script>\n"|html}}`, nil); err == nil {
|
||||
g.Dump(c)
|
||||
} else {
|
||||
g.Dump(c)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user