Heim >Backend-Entwicklung >PHP-Tutorial >Wie schneide ich HTML-Text ab und behalte dabei die Tag-Struktur bei?

Wie schneide ich HTML-Text ab und behalte dabei die Tag-Struktur bei?

Linda Hamilton
Linda HamiltonOriginal
2024-11-13 00:04:01990Durchsuche

How to Truncate HTML Text while Preserving Tag Structure?

Abschneiden von Text, der HTML enthält, mit Tag-Erhaltung

Herausforderung

Abschneiden von Text mit eingebetteten HTML-Tags führt häufig zu unvollständigen oder falsch geschlossenen Tags. Wie können wir den Text effektiv kürzen und gleichzeitig die HTML-Struktur beibehalten?

Lösung: Tag-Aware Truncation

Um die HTML-Struktur beizubehalten, müssen wir den Überblick über und behalten Verwalten Sie offene und geschlossene Tags. Hier ist eine PHP-Implementierung:

function printTruncated($maxLength, $html, $isUtf8 = true)
{
    $printedLength = 0;
    $position = 0;
    $tags = [];

    $re = $isUtf8
        ? '{</?([a-z]+)[^>]*>|&amp;#?[a-zA-Z0-9]+;|[\x80-\xFF][\x80-\xBF]*}'
        : '{</?([a-z]+)[^>]*>|&amp;#?[a-zA-Z0-9]+;}';

    while ($printedLength < $maxLength && preg_match($re, $html, $match, PREG_OFFSET_CAPTURE, $position))
    {
        list($tag, $tagPosition) = $match[0];

        $str = substr($html, $position, $tagPosition - $position);
        
        # More code...
        
        # Continue after the tag.
        $position = $tagPosition + strlen($tag);
    }

    # More code...
}

Beispielverwendung

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

printTruncated(10, '<table><tr><td>Heck, </td><td>throw</td></tr><tr><td>in a</td><td>table</td></tr></table>');

printTruncated(10, "<em><b>Hello</b>&amp;#20;w\xC3\xB8rld!</em>");

Hinweis:

Die Funktion geht von UTF aus. 8 Kodierung. Für andere Kodierungen verwenden Sie mb_convert_encoding, um vor dem Abschneiden in UTF-8 zu konvertieren.

Das obige ist der detaillierte Inhalt vonWie schneide ich HTML-Text ab und behalte dabei die Tag-Struktur bei?. 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