PHP HTML strip_tags 除部分标签外的所有标签并删除标签内的样式

标签 php strip-tags

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/

相关文章:

PHP T_ENCAPSED_AND_WHITESPACE

php - 给出所选行的结果

php - HTML 到纯文本 - 未知的原始编码

PHP 从回显输出中删除 <body><html>...</html></body>

php - 带有 PHP 的 APNS 无法启用加密错误

php - Elasticsearch批量数据插入-JsonParseException [意外字符-使用PHP

php - 从单个数组创建多维数组

PHP 只允许 img 标签

php - 用 PHP 中的 htmlspecialchars() 替换除某些 html 标签以外的所有标签?

C# Internet Explorer 和剥离 HTML 标签