2010-12-29 8 views
3

最近、ReReplace()関数で次のRegExを使用して、ColdFusionを使用している文字列からHTMLタグを取り除きました。 注意:私はXSSまたはSQLインジェクションからの保護としてこれを使用していません。これは、既存の安全なHTMLを文字列から削除してから、HTMLタイトル属性に表示するだけです。文字列からHTMLを削除する最良の方法は何ですか?

REReplaceNoCase(str,"<[^>]*>","","ALL") 

セミ関連の質問I asked how to modify my RegExには、スペースと改行が含まれています。私は、この目的のために正規表現を使用することは適切ではないと言われた、あなたが投稿した正規表現は正しく、実際の作業ではないことかかわらthis post was referenced as an explanation.

は、私は強く疑います。 HTMLは通常の言語ではないので、正規表現を使用してHTMLを解析することはお勧めしません。代わりにHTMLパーサーを使用してください。 (Mark Byers

これが当てはまる場合、表示する前に文字列からHTMLを削除する適切なツールは何ですか? (HTMLはすでに安全ですが、DBに入る前に消毒されていることに注意してください)。

私はHTMLEditFormat()HTMLCodeFormat()を認識していますが、これら2つの機能は必要なものを提供しません。以前は特別な文字をHTMLでエスケープした同等のものに置き換えますが、後者はまったく同じですが、文字列の<pre>タグをラップします。

私は何をしたいのはHTMLからクリーンな文字列であると私はHTMLが必要ない場合がありますHTMLのtitle属性に<a title="My string without HTML goes here">...</a>

を表示する前に改行。たとえば、HTMLと一緒に格納されていないポストからの抜粋を表示したいとします。

答えて

5

私はあなたが引用した理由には同意しません。 HTMLはであるべきではありませんが、正規表現を使用してを解析すると、ストリップタグが最適です。

しかし、あなたはそれはあなたが代わりに<([^">]|"[^"]*"|'[^']*')*>ようなものが必要悪い形成

">...</span> 

<span title=">">...</span> 

をオンになるので、ちょうど<[^>]*>より慎重になるでしょう。あなたは正規表現の代わりに文字の置換で改行を取り除くことができますが、もし正規表現を好むなら、\nのようなものを使うことができます(あるいは、これを上記と交互に使うこともできます。

+0

チャールズは、説明のための多くのおかげで。私はこれを少しでも開いたままにして、それ以上の入力を促すことができるかどうかを確認します。あなたは "キャラクターの置き換え"を使ってあなたが意味するものを明確にすることはできますか?これを行う特定の機能はありますか?このコンセプトに関するこれ以上の精緻化は評価されるだろう。 – Mohamad

+0

私は ''置き換え(STR、 '\ n' は、 ''、 'すべて')を考えていました。 – Charles

+0

チャールズ、あなたが作った文字列の問題は、私がそれを使うことができないということです。全体の正規表現文字列は二重引用符の間に座って持っているので、二重引用符は、機能をめちゃくちゃにして、エラーの原因となっている...私はこの問題を回避することができますどのように任意のアイデアを? – Mohamad

1

chilkat htmlパーサーchilkatを使用してください。 Googleの学術プロジェクトでこれを使用して、HTMLページからすべてのコンテンツとハイパーリンクを取得し、基本的な検索エンジンを構築しました。

1

タイトルにHTMLスニペットを含める場合は、すべてのベースを正規表現と十分なテストでカバーできます。

さらに大きなスニペットを処理する必要がある場合は、DOM4jを解析してテキストを取得するか、結果をStringbuildingしてXML SAXパーサ。

[EDIT]私が最初に答えたとき、私はHTMLが合理的にうまく形成されなければならないことを書くことについてだったが、ソース上のコントロールのあなたは、少なくともビットを仮定しました。あなたはそれを持っていない場合は、しかし、私はどちらかテストした、当然のことながら、JTidyTagSoupなしに迅速にリンクしますが、彼らは間違いなく、私は、CFと現実世界のHTMLを消費するためにテストするだろう最初のものです

関連する問題