0

最近、HTML を含む投稿コンテンツ (投稿の抜粋/要約など) を切り詰める必要がありました。これは通常、投稿の抜粋を手動で入力することによって行われますが、この特定のプロジェクトでは、自動的に行う必要があります。

文字数を取得してコンテンツをサブストリング化する単純なメソッドを作成しようとしました。ただし、HTML タグ/属性内のコンテンツが切り詰められる可能性があるため、これは常に機能するとは限りません。

例えば:

<?php
function truncateText($string, $chars) { return substr($string, 0, $chars); }

$content = "<div><p>some content</p><a href='http://google.com'>Let's go to google</a></div>";    

echo truncateText($content,40); //returns "<div><p>some content</p><a href='http:/"

ご覧のとおり、壊れた HTML が返され、適切にレンダリングされません。HTML タグを保持したまま、コンテンツを切り詰めるにはどうすればよいですか?

4

2 に答える 2

0

あなたのアプローチは多くの問題を引き起こします。40 文字で切り捨てて、タグが閉じるまで必要な数のタグを追加しますか? それとも、40 で切り捨てて、タグが機能するように必要なだけトリミングしますか? タグの合計は 40 文字になりますか、それともカウント時に無視されますか? ご覧のとおり、これには多くの問題があります。ただし、要約に一般的に見られる代替手段があります。

タグを削除し、テキストを切り捨てます。要約は通常、単純な形式のテキスト (段落) の小さな抜粋です。ここにリストは必要ありません。ほとんどの場合、リンクを 1 つまたは 2 つ削除してもかまいません。

ただし、本当にその道を進みたい場合は、何らかのDOM パーサーを使用して html タグを有意義に読むことをお勧めしますが、その方法を知るには、最初に私が書いた最初の質問に答える必要があります。

于 2013-07-02T20:58:52.110 に答える
0

テキストから書式設定が削除されても構わない場合は、strip-tags()他の処理を行う前に、PHP 関数を介して文字列を送信するだけです。 手順はこちら

于 2013-07-02T22:06:13.620 に答える