ホームページ > バックエンド開発 > Golang > Go で HTML エスケープ シーケンスを効率的に変換する方法

Go で HTML エスケープ シーケンスを効率的に変換する方法

Susan Sarandon
リリース: 2024-12-17 15:22:16
オリジナル
647 人が閲覧しました

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 シーケンスはデコードせず、decmal; のみをデコードします。または 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート