ホームページ > バックエンド開発 > PHPチュートリアル > タグを壊さずに埋め込み HTML でテキストを切り詰める方法

タグを壊さずに埋め込み HTML でテキストを切り詰める方法

Linda Hamilton
リリース: 2024-11-10 04:37:02
オリジナル
851 人が閲覧しました

How to Truncate Text with Embedded HTML Without Breaking Tags?

埋め込み HTML によるテキストの切り詰め

HTML タグを含むテキストを扱う場合、タグの破損やタグの破損を避けるために、切り詰め中に適切な処理を行うことが重要です。無効なコンテンツを表示します。 HTML の整合性を維持しながらテキストを切り詰める方法は次のとおりです。

PHP 実装:

次の PHP 関数は、正規表現を使用して HTML を解析し、オープン スタックを維持します。 tags:

function printTruncated($maxLength, $html, $isUtf8 = true) { ... }
ログイン後にコピー

この関数は HTML 入力をスキャンし、タグと文字エンティティを識別します。タグが適切に閉じられていることを確認し、文字エンティティを単一の文字としてカウントします。このアプローチにより、HTML 構造を壊すことなく有効なポイントで切り捨てが行われるようになります。

使用例:

printTruncated(10, '<b><Hello&amp;gt;</b> <img src="world.png" alt="" /> world!'); // Outputs: 'Hello<b></b> <img src="world.png" alt="" />'
ログイン後にコピー

Python 実装:

BeautifulSoup のような HTML 解析ライブラリは、Python でのこのタスクに役立ちます:

from bs4 import BeautifulSoup, NavigableString

def truncate_html(text, max_length):
    soup = BeautifulSoup(text, 'lxml')
    truncated = soup.new_tag("div")
    tail = soup.new_string('')

    node_len = 0
    for node in soup.children:
        if isinstance(node, NavigableString):
            node_len += len(node)
            if node_len <= max_length:
                truncated.append(node)
            else:
                tail.append(node.string[:max_length - node_len])
                break
        else:
            node_len += len(str(node))
            truncated.append(node)
        
    return str(truncated) + str(tail)
ログイン後にコピー

使用例:

print(truncate_html('<b><Hello&amp;gt;</b> <img src="world.png" alt="" /> world!', 10)) # Outputs: 'Hello<b></b> <img src="world.png" alt="" />'
ログイン後にコピー

結論:

これらのメソッドは、切り詰め中に HTML タグを解析して処理することにより、結果として得られるテキストが意図した構造とコンテンツの有効性を確実に維持します。

以上がタグを壊さずに埋め込み HTML でテキストを切り詰める方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート