2012-05-01 7 views
0

HTMLを含むユーザーが投稿したコンテンツを受け入れる場合、(PHPを使用して)自動抜粋を生成する方法はありますが、HTMLは有効なままにしておきますか?有効なHTMLで自動抜粋を生成する最も安全な方法は何ですか?

たとえば、最初の200文字を選択すると、終了タグがなくなる可能性があり、カウントタグはそれほど単純ではありません。

私はいくつかの図書館を見ましたが、多くのことを扱うので大規模です。私は自動抜粋を生成するためにのみ必要です。

+0

は、あなたが本当に抜粋のための完全なHTMLをサポートしますかありますか?たぶん、いくつかの改行を修正した 'strip_tags'で十分でしょうか? – DCoder

+0

ここでは、この問題についていくつか興味深い考えがあります.jQueryにはありますが、トピックの理解を深めることができます:http://ejohn.org/blog/pure-javascript-html-parser/ – freshnode

+0

私は使用しないようにしていますPHPと一般的にサーバー側のWebのもののためのPerlを好む。それはあなたが探していることをする気の利いた[HTML :: Trim module](https://metacpan.org/module/HTML::Trim)を含む多くの役に立つライブラリを持っています。 [ソースコード](https://metacpan.org/source/SATOH/HTML-Trim-0.02/lib/HTML/Trim.pm)が利用できるので、PHPに移植するために使用できます。 – Quentin

答えて

1

有効性を確保したい場合は、タグをカウントする必要があります。

strip_tagsが受け入れるタグを制限することで、それを確認するのがより簡単になります。

最初に、指定された位置(200)の文字がタグの一部であるかどうかを確認する必要があります。 私が考える最も簡単な方法は、tag closer(>)の前にタグオープナー(<)がその位置の左側に現れるかどうかをチェックすることです。

タグ内にいる場合は、タグが終了タグかどうかを判断する必要があります。もしそうなら、あなたの限界を ">"の次の出現にまで広げるべきです。そうでない場合は、タグオープナの最後の表示の制限を減らします。

あなたの唯一の問題は、文字列の最後に終了タグがないかどうかを確認することです。 許可されたタグ(開閉)をカウントすると、最後に追加する必要がある終了タグとその数をヒントとして表示します。

これらの「矯正」タグの順序を決定する問題が残っています。 少し論理があれば、あなたもタルトできるはずです。

は、素敵な1

ステファン

+1

http://www.gsdesign.ro/blog/cut-html-string-without-breaking-the-tags/ –

+0

おかげでStefan、リンクのスクリプトが私に必要なものを私に提供するように見える –

関連する問題