2011-06-06 69 views
0

所有样式如何要删除属性BUT NOT TO REMOVE的样式属性,这是 提供表 - PHP要删除所有样式属性,但不删除样式属性,这在表中可供选择 - PHP

例如:

<div style="text-align: justify; text-indent: -13.5pt; ><strong>Motion with Constant Acceleration</strong></div> 
<table cellspacing="0" cellpadding="0" border="1" style="border: medium none; border-collapse: collapse;"> 
<tr><td width="114" style="border: 1pt;"><div align="center">&nbsp;</div></td> 
<td width="264" style="border-width: 1pt 1pt 1pt medium;" colspan="2">Data Sheet</td> 
<td width="157" style="border-width: 1pt 1pt 1pt medium;"><div align="center">&nbsp;</div></td> 
</tr> 
<tr style="height: 0.4in;"><td width="114" style="border-width: medium 1pt 1pt;"><div align="center">&nbsp;</div></td> 
<td width="156" style="border-width: medium 1pt 1pt medium;">Incline angle</td> 
<td width="108" style="border-width: medium 1pt 1pt medium;"><div align="center">&nbsp;</div></td> 
<td width="157" style="border-width: medium 1pt 1pt medium;"><div align="center">&nbsp;</div></td> 
</tr> 
</table> 

我的输出应该是这样的(注div标签):

<div><strong>Motion with Constant Acceleration</strong></div> 
<table cellspacing="0" cellpadding="0" border="1" style="border: medium none; border-collapse: collapse;"> 
<tr><td width="114" style="border: 1pt;"><div align="center">&nbsp;</div></td> 
<td width="264" style="border-width: 1pt 1pt 1pt medium;" colspan="2">Data Sheet</td> 
<td width="157" style="border-width: 1pt 1pt 1pt medium;"><div align="center">&nbsp;</div></td> 
</tr> 
<tr style="height: 0.4in;"><td width="114" style="border-width: medium 1pt 1pt;"><div align="center">&nbsp;</div></td> 
<td width="156" style="border-width: medium 1pt 1pt medium;">Incline angle</td> 
<td width="108" style="border-width: medium 1pt 1pt medium;"><div align="center">&nbsp;</div></td> 
<td width="157" style="border-width: medium 1pt 1pt medium;"><div align="center">&nbsp;</div></td> 
</tr> 
</table> 
+0

你不应该使用[正则表达式来处理HTML]来(http://stackoverflow.com/问题/ 1732348 /正则表达式匹配开放标签,除了-XHTML-自足标签/ 1732454#1732454)。您应该使用适当的HTML解析器,在解析时剥离样式属性或移动文档树以去除它们。 – outis 2011-06-06 11:01:49

回答

0

用正则表达式解析/破解HTML的坏主意。你可以尝试像这样:

s/(?<!table[^>])style=".*"// 

含义:当尝试向后匹配时,替换style =“”无任何事情,你没有任何>字符之前的表。

可能需要一些微调来工作,但是,还没有尝试过,我仍然认为这是一个坏主意。

要微调,我建议看看look-behind in regex。我不知道如果lookbehind是由php正则表达式支持的,那么请您检查一下,这不是一个完整的答案。

+0

你是对的......但我打算仅以PDF格式显示数据。 – Fero 2011-06-06 11:39:08