否定

2012-01-19 30 views
2

在下面的字符串:否定

<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> 

我想刪除所有的屬性比其他如下:邊境,BGCOLOR和類。

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

不工作。有什麼建議嗎?

+0

你可以使用它的正則表達式。但它只適用於輸出轉換,而不是安全功能。一個正則表達式會涉及到各種法律序列化的開銷太多。 – mario 2012-01-19 00:18:50

回答

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

看到它在這裏的行動:http://regexr.com?2vp0m


這就是說,please don't use a regex to parse HTML

+0

對於一個很好的答案+1(並感謝鏈接到RegExr,我以前沒有見過它 - 看起來很有用!) – 2012-01-19 00:25:59

+1

@StuartGolodetz - 我在這裏用它來表達我在正則表達式上的所有答案。這是一種簡單的方式來證明你在做什麼實際上是有效的! – 2012-01-19 00:28:30