Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Memotong Teks HTML sambil Memelihara Struktur Tag?

Bagaimana untuk Memotong Teks HTML sambil Memelihara Struktur Tag?

Linda Hamilton
Lepaskan: 2024-11-13 00:04:01
asal
1031 orang telah melayarinya

How to Truncate HTML Text while Preserving Tag Structure?

Memangkas Teks Yang Mengandungi HTML dengan Pemeliharaan Teg

Cabaran

Memotong teks dengan teg HTML terbenam selalunya membawa kepada teg yang tidak lengkap atau ditutup dengan tidak betul. Bagaimanakah kita boleh memotong teks dengan berkesan sambil mengekalkan struktur HTML?

Penyelesaian: Pemangkasan Tag-Aware

Untuk mengekalkan struktur HTML, kita perlu menjejaki dan menguruskan tag terbuka dan tertutup. Berikut ialah pelaksanaan PHP:

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...
}
Salin selepas log masuk

Contoh Penggunaan

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>");
Salin selepas log masuk

Nota:

Fungsi ini menganggap UTF- 8 pengekodan. Untuk pengekodan lain, gunakan mb_convert_encoding untuk menukar kepada UTF-8 sebelum pemotongan.

Atas ialah kandungan terperinci Bagaimana untuk Memotong Teks HTML sambil Memelihara Struktur Tag?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan