Maison > développement back-end > tutoriel php > Comment tronquer le texte HTML tout en préservant la structure des balises ?

Comment tronquer le texte HTML tout en préservant la structure des balises ?

Linda Hamilton
Libérer: 2024-11-13 00:04:01
original
991 Les gens l'ont consulté

How to Truncate HTML Text while Preserving Tag Structure?

Tronquer du texte contenant du HTML avec préservation des balises

Défi

Tronquer du texte avec des balises HTML intégrées conduit souvent à des balises incomplètes ou mal fermées. Comment pouvons-nous tronquer le texte efficacement tout en préservant la structure HTML ?

Solution : troncature basée sur les balises

Pour préserver la structure HTML, nous devons garder une trace et gérer les balises ouvertes et fermées. Voici une implémentation 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...
}
Copier après la connexion

Exemple d'utilisation

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>");
Copier après la connexion

Remarque :

La fonction suppose UTF- 8 encodage. Pour les autres encodages, utilisez mb_convert_encoding pour convertir en UTF-8 avant la troncature.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal