2011-01-31 14 views
0

でテキストからインラインCSSとクラスを削除します。私はこのフォーム内のテキストを持っているPHP

AAAA BBBBB CCCCCC A:リンク{テキスト装飾:なし;フォントファミリ:MS Pゴシック、ゴシック、ヘルベチカ、サンセリフ;色:#ffffff; } a:ホバー{テキスト装飾:下線;フォントファミリ:Verdana、Arial、Helvetica、sans-serif;} .intro {font-size:11px; font-weight:bold; } ddddd eeeeee

私はクラスですべてのCSSを削除したいと思います。出力は次のようになります。

AAAA BBBBB CCCCCC DDDDD eeeeee

aynoneが私にするpreg_match例を示していることはできますか?私はbrakets {}の間のすべてを削除する例が好きですが、私はcssのすべてが削除されている必要があります。

おかげ ニック

+0

あなたの条件にpreg_replaceを使用しないのはなぜですか? –

+0

答えを受け入れて、あなたがすでに持っている正規表現を見せてください。あなたは答えの材料の半分しか与えていない –

答えて

0

あなたは、その文字列から非CSSの一部を除去しなければならない問題が、それはCSSであり、これはされていない部分を判断するのは非常に難しいということです。

あなたはaaaa bbbbb cccccc ddddd eeeeeeのままにしたいと思っていますが、実際には元の文字列のaaaa bbbbb ccccccはCSSセレクタの有効な部分です。彼らは<aaaa>または<bbbbb>または<cccccc>という名前の要素を選択します。

これらは有効なHTML要素ではありませんが、CSSはHTMLだけでなく任意のXMLにもスタイルを適用できるため、非常に簡単に有効な要素となります。 xhtmlを使用している場合は、カスタムネームスペースの下で正当にページに表示される可能性があります。

しかし、それは悪化します。私は、テキストが実際にはaaaa bbbbb ccccccではないだろうと仮定していますが、単語の任意の文字列になります。その場合、それは「私は強い」のような文章かもしれないと考えてください。この場合、strongは削除したい文字列の一部になりますが、<strong>も有効なHTML要素です(その点については<I>)、それでも固執していても上では説明できません文字列は、CSSセレクタであるか、テキスト文字列の一部であるかを問わない。すべての場合に完全に信頼できる正規表現を書くことはできません。

あなたが言うように、{}中括弧はかなり簡単に削除できますが、中括弧の外側のセレクタは周囲のテキストから確実に分離しにくいでしょう。

関連する問題