gpt4 book ai didi

html - 你如何在 Go 中转义原始 HTML?

转载 作者:数据小太阳 更新时间:2023-10-29 03:43:16 24 4
gpt4 key购买 nike

我已经设法使用以下行输出文本:

fmt.Fprintf(w, "<p>some text</p>")

但这将逐字输出 HTML 标签。您如何输出它,以便它可以安全地包含在 HTML 中,就像在 PHP 中使用 echo 一样?

最佳答案

fmt.Fprintf()不了解 HTML 语法:它输出原始数据而不对其进行转义(它可能会进行一些格式化,但不会转义)。

虽然你没有正确使用它:它的第二个参数是一个格式字符串,所以你应该这样调用它:

fmt.Fprintf(w, "%s", "<p>some text</p>")

否则,如果您的文本包含一些特定于格式的特殊字符,您将无法获得预期的结果。

您想要的是转义 HTML 代码,以便它可以安全地包含在 HTML 文档/页面中。为此,您可以从 html/template 获得出色的支持包,它为您提供了一个强大的模板引擎,其中自动转义功能只是一个功能。

这是一个如何实现您想要的简单示例:

w := os.Stdout

text := "<p>some text</p>"
fmt.Fprintf(w, "%s\n", text)

tt := `{{.}}`
t := template.Must(template.New("test").Parse(tt))
t.Execute(w, text)

输出(在 Go Playground 上尝试):

<p>some text</p>
&lt;p&gt;some text&lt;/p&gt;

另请注意,如果您只想转义某些 HTML 代码,则可以使用 template.HTMLEscaper()功能:

fmt.Println(template.HTMLEscaper(text))

输出:

&lt;p&gt;some text&lt;/p&gt;

关于html - 你如何在 Go 中转义原始 HTML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31177428/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com