Cor*_*eus 0 php regex preg-replace
这个问题与类似的情况有关,即使用php删除内联样式
那里的解决方案没有删除ie: <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>
Run Code Online (Sandbox Code Playgroud)
需要什么regExp来实现这个结果?
<ul>
<li><div>Some text</div></li>
<li><font>Some text</font></li>
<li><font>Some text</font></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
像往常一样,正则表达式不适合解析HTML; 使用实际的HTML解析器你会变得更好.
那说......
$noattributes = preg_replace('/<(\w+) [^>]+>/', '<$1>', $original);
Run Code Online (Sandbox Code Playgroud)
...将使用相应标记w/o属性替换任何包含属性的开始标记.但是,它可能会意外地击中包含在其他标签的引用属性中的"标签"(因此实际上并不标记自己).它还会导致自动关闭标签出现问题(它将替换<br />为<br>) - 但如果自动关闭标签在标签名称和斜杠之间没有空格,则可以避免这种情况.