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
Lepaskan: 2024-12-17 15:22:16
asal
645 orang telah melayarinya

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)
}
Salin selepas log masuk

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
}
Salin selepas log masuk

Output:

\u003chtml\u003e
<html>
<html>
Salin selepas log masuk

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)
Salin selepas log masuk

Output:

<html>
\u003chtml\u003e
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan