Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menukar Urutan Melarikan HTML dengan Cekap dalam Go?

Bagaimana untuk Menukar Urutan Melarikan HTML dengan Cekap dalam Go?

Susan Sarandon
Susan Sarandonasal
2024-12-17 15:22:16646semak imbas

How to Efficiently Convert HTML Escape Sequences in Go?

Menukar Aksara Melarikan Diri dalam Teg HTML

Dalam Go, penukaran teg HTML yang mengandungi aksara melarikan diri tidak semudah yang diingini. Walaupun json.Marshal() boleh menukar rentetan dengan aksara seperti "<" dengan mudah kepada urutan pelariannya "u003chtmlu003e," json.Unmarshal() tidak menyediakan kaedah langsung dan cekap untuk operasi songsang.

Menggunakan strconv.Unquote()

Fungsi strconv.Unquote() boleh digunakan untuk melakukan penukaran. Walau bagaimanapun, ia memerlukan rentetan untuk disertakan dalam tanda petikan. Oleh itu, penambahan aksara lampiran ini secara manual adalah perlu.

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

Output:

\u003chtml\u003e
<html></p>
<p><strong>Nota:</strong></p>
<p>Pakej html juga tersedia untuk teks HTML melarikan diri dan tidak melarikan diri. Walau bagaimanapun, ia tidak menyahkod jujukan unicode dalam bentuk uxxxx, hanya decimal; atau 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
}

Output:

\u003chtml\u003e
<html>
<html>

Nota 2:

Ingat bahawa rentetan yang dipetik menggunakan petikan berganda ( ") ialah rentetan yang ditafsirkan, yang tidak dipetik oleh pengkompil. Untuk menentukan rentetan dengan petikannya utuh, gunakan backticks untuk mencipta rentetan mentah literal.

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)

Output:

<html>
\u003chtml\u003e

Atas ialah kandungan terperinci Bagaimana untuk Menukar Urutan Melarikan HTML dengan Cekap dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn