質問

いタイミングよくタップするHTMLタグのColdFusion文字列になります。ま引いている、RSSフィードことができる可能性があり何かします。そして一部の操作の情報を吐きの時に書きもしなければならない別の場所です。現在行っていることを正規表現で指定する。あると良い。

<cfloop from="1" to="#ArrayLen(myFeed.item)#" index="i">
  <cfset myFeed.item[i].description.value = 
   REReplaceNoCase(myFeed.item[i].description.value, '<(.|\n)*?>', '', 'ALL')>
</cfloop>

しColdFusion8.

役に立ちましたか?

解決

免責事項 私は激しい主張用のパーサの代わりに、regex)の解析をHTML.しかし、この問題ではないと思う 構文解析 HTMLで 破壊 ます。すべてのタスクを超える使用のパーサです。


行きたいという正規表現が良いです。とがありますよ 除去すべてのHTMLタグ からの入力、regexのような作業ですので安心です。

何かをより手間以外でも書きの小さな機能がループを文字列の文字による文字を一度削除しべ内でタグブラケット—例:

  • スイッチを"inTag"フラグをしてすぐに出会う"<"キャラクター,
  • スイッチがoffまとの出会い">"
  • コピー文字の出力文字列のフラグがオフ
  • ファイアーパフォーマンスの経験を使用StringBuilder Javaオブジェクトの代わりに文字列の連結

高い需要の一部アプリでは、このregex.が、regexのでしょう速度です。

この改正規表現は専用に作成する方法もあります。

<[^>]*(?:>|$)
  • 漁閉じてタグの文字列の末尾に
  • [^>]* 以上 (.|\n)

の利用 REReplaceNoCase() が必要なくありません実際の文字のパターンです。大文字と小文字を区別しな正規表現マッチング遅い場合-るようにしました。

他のヒント

HTMLがそうで正規表現を使用して、定期的な言語ではありません(制御不能)HTMLは、(すべてである場合)。

細心の注意を払って行われるべきものです HTMLの

を検討し、例えば、以下のの有効なのセグメントます:

<img src="boat.jpg" alt="a boat" title="My boat is > everything! I <3 my boat!">

あなたはシンタックスハイライトは、その上で窒息されてどのように注意しましょう - 。既存の正規表現が提供されていますそのよう

あなたがすることができない限り、

の特定ののあなたが処理されている文字列は上記と同様のHTMLコードを含まないことを、あなたは純粋/単一の正規表現のルートがにあなたを強制することになる、仮定/妥協を避ける必要がありますやるます。

(注:同じ問題があまりにも示唆チャー・バイ・チャー法に適用される)


あなたの問題を解決するには、各要素をループしてテキストに変換し、HTMLオブジェクトにあなたの文字列を解析するDOMパーサを使用する必要があります。

をあなたがあなたががすることができます、ループオブジェクトを生成するためにCFのXmlParse()を使用することができ、有効なXHTMLを持っている場合。 それが非XMLのHTMLかもしれない場合は、Javaのオプションを検討する必要がありますので、その後、CF8と組み込みのオプションがないの/ etcます。

私はこれを使用します:

REReplaceNoCase(text, "<[^[:space:]][^>]*>", "", "ALL");

例99%は、それが正常に動作します。

最良の方法は、<&lt;>する&gt;を強制することは通常です。この方法は、あなたがメッセージの性質についての仮定を行っていません。誰かが<tags>の話や<<expressive>>ことしようとしているか、キーストローク<Ctrl>+Cを記述したり数学1 < x > 3を使用することができます。でも、スマイリーは、正規表現<8P X>を引き起こす可能性

<cfloop from="1" to="#ArrayLen(myFeed.item)#" index="i">
    <cfset myFeed.item[i].description.value = ReplaceList(myFeed.item[i].description.value, '<,>', '&lt;,&gt;')>
</cfloop>

cflib にあなたの友達です:<のhref = "http://www.cflib.org/udf / stripHTML」のrel = "nofollowをnoreferrer"> stripHTML の

<cfset a = "<b><font color = 'red'>(PCB) <1 ppm </font></b>">

<cfset b = REReplaceNoCase(a, "<[^><]*>", '', 'ALL')>

<cfdump var="#b#">

出力B = "(PCB)<1 ppmで"

正規表現「<[^> <] *>」/ <すべてのタグ及びこれらのタグ内の文字を削除し、文字列内のシンボルよりもより少ない以上として用いることができる。<または>単一のタグを削除しないであろうP>

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top