2012-01-19 11 views
2

のセット上:ボーダー、BGCOLORとクラス:正規表現否定、以下の文字列内の文字列

<table border="1"><tr><td class=" m" bgcolor="#cccccc" style="bold" size="7" m="m "><span></span> </td><td class=" m" bgcolor="#cccccc" style="bold" size="7" m="m " align="center">NAMES </td><td class=" m" bgcolor="#cccccc" style="bold" size="7" m="m " colspan="13" align="center">AREAS </td></tr></table> 

私はすべてが次以外の属性を削除したいです。

^(?:border|class|bgcolor)\b))=".*?" 

は機能しません。何か提案してください?

+0

これには正規表現を使用できます。しかし、出力変換ではセキュリティ機能としてではなく、推奨されます。正規表現は、さまざまな法的なシリアライゼーションをカバーするにはあまりにもオーバーヘッドになります。 – mario

答えて

2
preg_replace('/ (?!(border|class|bgcolor))[^=" ]+="[^"]*"/', '', $str); 

ここでのアクションでそれを参照してください:http://regexr.com?2vp0m


please don't use a regex to parse HTML、言いました!

+0

+1良い答え(RegExrへのリンクありがとう、以前は見たことがありませんでした - 有益に見えます) –

+1

@StuartGolodetz - 私はここで正規表現のすべての答えに使用します。あなたが実際にやっていることが実際に働くことを実証するのは、簡単な方法です! –