首頁 >後端開發 >php教程 >如何在保留標籤結構的同時截斷 HTML 文字?

如何在保留標籤結構的同時截斷 HTML 文字?

Linda Hamilton
Linda Hamilton原創
2024-11-13 00:04:011037瀏覽

How to Truncate HTML Text while Preserving Tag Structure?

透過標記保留截斷包含HTML 的文字

挑戰

挑戰

截斷帶有嵌入標記的文字通常會導致標籤不完整或錯誤關閉。如何在保留 HTML 結構的同時有效截斷文字?

解決方案:標籤感知截斷
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...
}

為了保留 HTML 結構,我們需要追蹤和管理開啟和關閉標籤。這是一個PHP 實作:

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>");

範例用法

注意:注意:

以上是如何在保留標籤結構的同時截斷 HTML 文字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn