此问题与类似案例有关,即Removing inline styles using php
那里的解决方案没有删除,即:<font face="Tahoma" size="4">
但是,假设我有一个混合的内联样式和属性包,如下所示:
<ul style="padding: 5px; margin: 5px;">
<li style="padding: 2px;"><div style="border:2px solid green;">Some text</div></li>
<li style="padding: 2px;"><font face="arial,helvetica,sans-serif" size="2">Some text</font></li>
<li style="padding: 2px;"><font face="arial,helvetica,sans-serif" size="2">Some text</font></li>
</ul>
实现此结果需要什么regExp?
<ul>
<li><div>Some text</div></li>
<li><font>Some text</font></li>
<li><font>Some text</font></li>
</ul>
答案 0 :(得分:5)
像往常一样,正则表达式不适合解析HTML;使用实际的HTML解析器你可能会更好。
那说......
$noattributes = preg_replace('/<(\w+) [^>]+>/', '<$1>', $original);
...将使用相应标记w / o属性替换任何包含属性的开始标记。但是,它可能会意外地击中包含在其他标签的引用属性中的“标签”(因此实际上并不标记自己)。它还会导致自动关闭标记出现问题(它会将<br />
替换为<br>
) - 但如果自闭标记在标记名称和标记名称之间没有空格,则可以避免这种情况。斜线。