Heim > Backend-Entwicklung > PHP-Tutorial > 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
Freigeben: 2024-11-10 04:37:02
Original
813 Leute haben es durchsucht

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) { ... }
Nach dem Login kopieren

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="" />'
Nach dem Login kopieren

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)
Nach dem Login kopieren

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="" />'
Nach dem Login kopieren

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!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage