使用换行符克服 html/模板中的转义问题
在 HTML 模板中,编码为 n 的换行符将呈现为 HTML 实体(
) br>) 而不是实际的换行符。当 n 个字符被模板转义而不是作为可信数据的一部分接受时,就会发生这种情况。
解决方案:清理和预转义
将清理和替换的文本传递到模板作为 template.HTML,封装了安全的 HTML 片段。
示例实现:
<code class="go">package main import ( "html/template" "os" "strings" ) const page = `<!DOCTYPE html> <html> <head> </head> <body> <p>{{.}}</p> </body> </html>` const text = `first line <script>dangerous</script> last line` func main() { t := template.Must(template.New("page").Parse(page)) safe := template.HTMLEscapeString(text) safe = strings.Replace(safe, "\n", "<br>", -1) t.Execute(os.Stdout, template.HTML(safe)) }</code>
以下代码演示了该过程:
此代码清理文本,用以上是如何在 HTML 模板中正确渲染换行符?的详细内容。更多信息请关注PHP中文网其他相关文章!