透過標記保留截斷包含HTML 的文字
挑戰
挑戰截斷帶有嵌入標記的文字通常會導致標籤不完整或錯誤關閉。如何在保留 HTML 結構的同時有效截斷文字?
解決方案:標籤感知截斷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... }
為了保留 HTML 結構,我們需要追蹤和管理開啟和關閉標籤。這是一個PHP 實作:
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>");
範例用法
注意:注意:以上是如何在保留標籤結構的同時截斷 HTML 文字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!