Heim >Backend-Entwicklung >Golang >Wie konvertiert man HTML-Escape-Sequenzen effizient in Go?

Wie konvertiert man HTML-Escape-Sequenzen effizient in Go?

Susan Sarandon
Susan SarandonOriginal
2024-12-17 15:22:16650Durchsuche

How to Efficiently Convert HTML Escape Sequences in Go?

Escape-Zeichen in HTML-Tags konvertieren

In Go ist die Konvertierung von HTML-Tags, die Escape-Zeichen enthalten, nicht so einfach wie gewünscht. Während json.Marshal() problemlos Zeichenfolgen mit Zeichen wie „<“ konvertieren kann Zu seiner Escape-Sequenz „u003chtmlu003e“ bietet json.Unmarshal() keine direkte und effiziente Methode für den umgekehrten Vorgang.

Verwendung von strconv.Unquote()

Für die Konvertierung kann die Funktion strconv.Unquote() eingesetzt werden. Allerdings muss die Zeichenfolge in Anführungszeichen eingeschlossen werden. Daher ist das manuelle Hinzufügen dieser umschließenden Zeichen erforderlich.

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)
}

Ausgabe:

\u003chtml\u003e
<html></p>
<p><strong>Hinweis:</strong></p>
<p>Das HTML-Paket ist ebenfalls verfügbar für HTML-Text-Escape und Unescaping. Allerdings werden keine Unicode-Sequenzen der Form uxxxx dekodiert, sondern nur decimal; oder 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
}

Ausgabe:

\u003chtml\u003e
<html>
<html>

Hinweis 2:

Denken Sie daran, dass Zeichenfolgen in Anführungszeichen mit doppelten Anführungszeichen ( ") sind interpretierte Zeichenfolgen, die vom Compiler nicht in Anführungszeichen gesetzt werden. Um eine Zeichenfolge mit intakten Anführungszeichen anzugeben, verwenden Sie Backticks, um eine Rohzeichenfolge zu erstellen wörtlich.

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)

Ausgabe:

<html>
\u003chtml\u003e

Das obige ist der detaillierte Inhalt vonWie konvertiert man HTML-Escape-Sequenzen effizient in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn