Heim > Backend-Entwicklung > Golang > So entfernen Sie HTML in Golang

So entfernen Sie HTML in Golang

PHPz
Freigeben: 2023-04-27 14:46:14
Original
1094 Leute haben es durchsucht

Go-Sprachübung: Wie entferne ich HTML-Tags?

In der Webentwicklung müssen wir häufig HTML-Tags entfernen, um Nur-Text-Inhalte zu erhalten, z. B. zur Analyse und Verarbeitung von Kommentaren, Artikeln usw. Für diese Anforderung bietet die Go-Sprache eine Vielzahl von Methoden. In diesem Artikel werden Ihnen einige davon vorgestellt.

Methode 1: String-Ersetzung verwenden

Die Go-Sprache stellt das Strings-Paket zum Betreiben von Strings bereit. Wir können die Methode strings.ReplaceAll() verwenden, um HTML-Tags durch Leerzeichen zu ersetzen, um einfachen Textinhalt zu erhalten. Der spezifische Implementierungscode lautet wie folgt:

package main

import (
    "fmt"
    "strings"
)

func main() {
    html := "<html><head><title>Test Page</title></head><body><p>Hello, Go!</p></body></html>"

    // 使用 strings.ReplaceAll() 将 HTML 标签替换为空白字符
    text := strings.ReplaceAll(html, "<", " <")
    text = strings.ReplaceAll(text, ">", "> ")
    text = strings.TrimSpace(strings.Join(strings.Fields(text), " "))

    fmt.Println(text)
}
Nach dem Login kopieren

Im obigen Code verwenden wir zunächst die Methode strings.ReplaceAll(), um alle linken spitzen Klammern („<“) durch Leerzeichen + linke spitze Klammern zu ersetzen und alle rechten Winkel zu ersetzen Klammern („>“) werden durch die Form einer rechten spitzen Klammer + Leerzeichen ersetzt, d. h. zwischen der Beschriftung und dem Text wird ein Leerzeichen eingefügt, um die spätere Verwendung der strings.Fields()-Methode zum Aufteilen der Zeichenfolge in mehrere zu erleichtern Teilzeichenfolgen. Als nächstes verwenden wir die Methode strings.Fields(), um die Zeichenfolge in mehrere Teilzeichenfolgen aufzuteilen, verwenden dann strings.Join(), um diese Teilzeichenfolgen mit Leerzeichen zu verbinden, und verwenden schließlich die Methode strings.TrimSpace(), um die Zeichenfolgen an beiden zu entfernen endet mit Leerzeichen, um den endgültigen Klartextinhalt zu erhalten.

Führen Sie den obigen Code aus und die Ausgabe sieht wie folgt aus:

Test Page Hello, Go!
Nach dem Login kopieren
Nach dem Login kopieren

Der obige Code ist einfach zu implementieren, es gibt jedoch mehrere Probleme:

  1. Wenn das HTML-Tag Attribute wie Google enthält, müssen wir hinzufügen Leerzeichen zwischen der linken und rechten spitzen Klammer, da sonst der Linktext „Google“ und die linke und rechte spitze Klammer in der ersetzten Zeichenfolge eng beieinander liegen, was die Lesbarkeit des Ergebnisses erschwert.
  2. Wenn das HTML-Tag zu viel Inhalt wie JavaScript, CSS usw. enthält, ist die Ersetzungsgeschwindigkeit langsamer.

In Anbetracht dieser Probleme können wir die zweite Methode verwenden.

Methode 2: Verwenden Sie die Goquery-Bibliothek

Goquery ist eine HTML-Parsing- und Manipulationsbibliothek in der Go-Sprache, die eine praktische und flexible API bietet. Wir können die Goquery-Bibliothek verwenden, um HTML zu analysieren und Textknoten zu filtern, um Nur-Text-Inhalte zu erhalten. Der spezifische Implementierungscode lautet wie folgt:

package main

import (
    "fmt"
    "strings"

    "github.com/PuerkitoBio/goquery"
)

func main() {
    html := "<html><head><title>Test Page</title></head><body><p>Hello, Go!</p></body></html>"
    doc, _ := goquery.NewDocumentFromReader(strings.NewReader(html))

    // 筛选文本节点
    var text string
    doc.Find(":not(script):not(style)").Each(func(_ int, sel *goquery.Selection) {
        if sel.Children().Length() == 0 {
            text += sel.Text() + " "
        }
    })

    fmt.Println(strings.TrimSpace(text))
}
Nach dem Login kopieren

Im obigen Code verwenden wir die Methode goquery.NewDocumentFromReader(), um HTML in ein goquery.Document-Objekt zu konvertieren. Als nächstes verwenden wir die Methode doc.Find(), um alle Knoten außer Skript- und Stil-Tags auszuwählen, und verwenden die Methode sel.Children().Length(), um zu bestimmen, ob der aktuelle Knoten ein Textknoten ist. Wenn ja, fügen wir ihn hinzu Inhalt in die Textvariable ein. Verwenden Sie abschließend die Methode strings.TrimSpace(), um die Leerzeichen an beiden Enden der Zeichenfolge zu entfernen und den endgültigen Klartextinhalt zu erhalten.

Führen Sie den obigen Code aus. Die Ausgabe lautet wie folgt:

Test Page Hello, Go!
Nach dem Login kopieren
Nach dem Login kopieren

Mit der Goquery-Bibliothek können verschiedene Tag-Formate verarbeitet werden, und der Code ist einfacher zu lesen und zu warten.

In diesem Artikel werden zwei Methoden zum Entfernen von HTML-Tags vorgestellt, unter denen auch häufig reguläre Ausdrücke verwendet werden. In praktischen Anwendungen können wir für bestimmte Situationen die am besten geeignete Methode auswählen.

Das obige ist der detaillierte Inhalt vonSo entfernen Sie HTML in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage