2009-06-11 5 views
2

私は、brまたはspan .../spanタグまたは他のHTML文字/エンティティを含む可能性のある文字列を持っています。私はそれをすべて取り除き、残りのUTF-8文字を得る堅牢な方法が必要です。これは理想的にはクロスプラットフォームでなければなりません。このようなC++:文字列からすべてのHTML書式を削除しますか?

何かが理想的である:

http://snipplr.com/view/15261/python-decode-and-strip-html-entites-to-unicode/

が、それはまた、タグを削除します。

答えて

0

要素を単に削除するか、HTMLをプレーンテキストに変換しますか?

オプション1:あなただけのすべての回出てくる削除したいとあなたが正規表現検索を使用して置き換えることができた場合

オプション2:

、私は考えることができる最も単純で最も堅牢な方法は、ブラウザを使用することで、あなたが本当にフォーマットしたページを取得し、プレーンテキストに変換されてやろうとしている場合、またはいくつかのブラウザエンジンを使用して、実際にHTMLを解析し、そこからテキストを抽出します。

IOWこれは、ブラウザからクリップボードにWebページをコピーし、それをメモ帳に貼り付けることと同じです。

2

あなたの要件はどれくらい厳しいですか?シンプルな2状態FSAがすべきです。 READCHAR状態から開始します。その状態で '<'を読むと、READTAG状態に移行します。それ以外の場合は、結果文字列に文字を書き込みます。 READTAG状態になり、 '>'を読むとREADCHAR状態に戻ります。

編集:エンティティの一部を逃しました。あなたはそれのためにREADENTITY状態を取り除くでしょう。あなたがそれから移行するときには、コードを対応するUTF-8文字に変換することもできます。

+0

は注意することは属性が含まれている可能性があるため、より多くの状態を ">"、必要とされています。 – strager

+0

それは本当です。だから私は彼の要求がどれほど厳しいか尋ねました。タグ内の '>'はかなりありそうもないが、確かに起こりうる。同様に、不正な形式のHTMLに対処したり、特定のタグに対して特別な処理を行う必要がある場合は、アルゴリズムを複雑にする必要があります。 –

+0

OPは、「人間が期待するように動作し、すべての場合において標準を完全に理解していると仮定すると、おそらく動作する」という意味の「ロバスト」を示しています。したがって、属性内の ">"は処理する必要があります。 – strager

1

私はあなたが何を望むのかはっきりしていません。

入力: これは、多くの行"

上のテキスト&の文字列

である。この出力する必要があります

1) This is a string <br> <br /> of text & on many lines " (Replace &amp; with & and &quot; with ") 
2) This is a string of text & on many lines " 
+0

彼は反対を望んでいます。 「すべてのHTML書式を削除する」という質問を参照してください。 – strager

+0

"このようなものは理想的でしょう: http://snipplr.com/view/15261/python-decode-and-strip-html-entites-to-unicode/ しかし、これもタグを削除します。 しかし、私は彼がタグを削除したくないと思います。 – chocojosh