Heim  >  Artikel  >  Backend-Entwicklung  >  Wie schneide ich Text mit eingebettetem HTML ab, ohne Tags zu zerstören?

Wie schneide ich Text mit eingebettetem HTML ab, ohne Tags zu zerstören?

Linda Hamilton
Linda HamiltonOriginal
2024-11-10 04:37:02768Durchsuche

How to Truncate Text with Embedded HTML Without Breaking Tags?

Text mit eingebettetem HTML abschneiden

Beim Umgang mit Text, der HTML-Tags enthält, ist es wichtig, die ordnungsgemäße Handhabung beim Abschneiden sicherzustellen, um zu verhindern, dass Tags beschädigt werden Anzeige ungültiger Inhalte. So können Sie Text abschneiden und gleichzeitig die Integrität von HTML beibehalten:

PHP-Implementierung:

Die folgende PHP-Funktion verwendet reguläre Ausdrücke zum Parsen von HTML und verwaltet einen Stapel offener Tags:

function printTruncated($maxLength, $html, $isUtf8 = true) { ... }

Diese Funktion scannt die HTML-Eingabe und identifiziert Tags und Zeicheneinheiten. Es stellt sicher, dass Tags ordnungsgemäß geschlossen werden und zählt Zeichenentitäten als einzelne Zeichen. Dieser Ansatz stellt sicher, dass die Kürzung an einer gültigen Stelle erfolgt, ohne dass die HTML-Struktur beschädigt wird.

Beispielverwendung:

printTruncated(10, '<b><Hello&amp;gt;</b> <img src="world.png" alt="" /> world!'); // Outputs: 'Hello<b></b> <img src="world.png" alt="" />'

Python-Implementierung:

HTML-Parsing-Bibliotheken wie BeautifulSoup können bei dieser Aufgabe helfen Python:

from bs4 import BeautifulSoup, NavigableString

def truncate_html(text, max_length):
    soup = BeautifulSoup(text, 'lxml')
    truncated = soup.new_tag("div")
    tail = soup.new_string('')

    node_len = 0
    for node in soup.children:
        if isinstance(node, NavigableString):
            node_len += len(node)
            if node_len <= max_length:
                truncated.append(node)
            else:
                tail.append(node.string[:max_length - node_len])
                break
        else:
            node_len += len(str(node))
            truncated.append(node)
        
    return str(truncated) + str(tail)

Beispielverwendung:

print(truncate_html('<b><Hello&amp;gt;</b> <img src="world.png" alt="" /> world!', 10)) # Outputs: 'Hello<b></b> <img src="world.png" alt="" />'

Schlussfolgerung:

Durch Parsen und Verarbeiten von HTML-Tags während Durch die Kürzung stellen diese Methoden sicher, dass der resultierende Text seine beabsichtigte Struktur und Inhaltsgültigkeit beibehält.

Das obige ist der detaillierte Inhalt vonWie schneide ich Text mit eingebettetem HTML ab, ohne Tags zu zerstören?. 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