首页 > 后端开发 > Golang > 如何在 Go 中高效转换 HTML 转义序列?

如何在 Go 中高效转换 HTML 转义序列?

Susan Sarandon
发布: 2024-12-17 15:22:16
原创
646 人浏览过

How to Efficiently Convert HTML Escape Sequences in Go?

转换 HTML 标签中的转义字符

在 Go 中,包含转义字符的 HTML 标签的转换并不像期望的那么简单。而 json.Marshal() 可以轻松转换带有“<”等字符的字符串对于其转义序列“u003chtmlu003e”,json.Unmarshal() 没有提供直接有效的反向操作方法。

使用 strconv.Unquote()

可以使用 strconv.Unquote() 函数来执行转换。但是,它要求将字符串括在引号中。因此,需要手动添加这些封闭字符。

import (
    "fmt"
    "strconv"
)

func main() {
    // Important to use backtick ` (raw string literal)
    // else the compiler will unquote it (interpreted string literal)!

    s := `\u003chtml\u003e`
    fmt.Println(s)
    s2, err := strconv.Unquote(`"` + s + `"`)
    if err != nil {
        panic(err)
    }
    fmt.Println(s2)
}
登录后复制

输出:

\u003chtml\u003e
<html></p>
<p><strong>注意:</strong></p>
<p>html 包也可用用于 HTML 文本转义和取消转义。但是,它不解码 uxxxx 形式的 unicode 序列,仅解码 decimal;或 HH;。</p>
<pre class="brush:php;toolbar:false">import (
    "fmt"
    "html"
)

func main() {
    fmt.Println(html.UnescapeString(`\u003chtml\u003e`)) // wrong
    fmt.Println(html.UnescapeString(`&amp;#60;html&amp;#62;`))   // good
    fmt.Println(html.UnescapeString(`&amp;#x3c;html&amp;#x3e;`)) // good
}
登录后复制

输出:

\u003chtml\u003e
<html>
<html>
登录后复制

注 2:

请记住,使用双引号 ( ") 是解释字符串,编译器不加引号。要指定带完整引号的字符串,请使用反引号创建原始字符串字符串文字。

s := "\u003chtml\u003e" // Interpreted string literal (unquoted by the compiler!)
fmt.Println(s)

s2 := `\u003chtml\u003e` // Raw string literal (no unquoting will take place)
fmt.Println(s2)

s3 := "\u003chtml\u003e" // Double quoted interpreted string literal
                           // (unquoted by the compiler to be "single" quoted)
fmt.Println(s3)
登录后复制

输出:

<html>
\u003chtml\u003e
登录后复制

以上是如何在 Go 中高效转换 HTML 转义序列?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板