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]+)[^>]*>|&#?[a-zA-Z0-9]+;|[\x80-\xFF][\x80-\xBF]*}' : '{</?([a-z]+)[^>]*>|&#?[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>&lt;Hello&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>&#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!