HTML 看起来像这样:
$html = 'SOME TEXT<p style="border-top: 0.0px;border-right: 0.0px;vertical-align: baseline;border-bottom: 0.0px;color: #000000;padding-bottom: 0.0px;padding-top: 0.0px;padding-left: 0.0px;margin: 0.0px;border-left: 0.0px;padding-right: 0.0px;background-color: #ffffff;">SOME TEXT';
我试过strip_tags($html, '<p>');
删除除 <p>
之外的所有内容但这保留了标签的所有样式元素。
我希望将上面的内容替换为 <p>
最好的方法是什么?
谢谢!
最佳答案
最简单的解决方案是基于 preg_replace()
.
$html = 'SOME TEXT<p style="border-top: 0.0px;border-right: 0.0px;vertical-align: baseline;border-bottom: 0.0px;color: #000000;padding-bottom: 0.0px;padding-top: 0.0px;padding-left: 0.0px;margin: 0.0px;border-left: 0.0px;padding-right: 0.0px;background-color: #ffffff;">SOME TEXT';
$html = strip_tags($html, '<p>');
$html = preg_replace('/\sstyle=["\'][A-Za-z0-9-:\s.;#]{1,}["\']/', '', $html);
与往常一样,在尝试使用正则表达式解析 html 时,您应该始终小心。例如,如果由于某种原因 <p />
中的文本,这将会失败。标签包含一些类似于 css 样式的格式。 (类似于<p>If I typed style="color:red" inside the tags, it would also be removed</p>
)
要使此类事情变得更好,下一步是使用 DOMDocument class 将字符串实际解析为 XML 文档。 。这取决于您希望实现的功能集有多强大。但是,此方法可能会以意想不到的方式更改您的字符串;例如,将字符串解析为 DOMDocument 会导致 </p>
要添加的标签。这种验证对您可能有用,也可能没用。
关于PHP HTML strip_tags 除部分标签外的所有标签并删除标签内的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41127299/