为了账号安全,请及时绑定邮箱和手机立即绑定

从字符串中删除除特定正则表达式之外的所有标签

从字符串中删除除特定正则表达式之外的所有标签

PHP
SMILET 2023-09-15 09:51:34
我写了这个正则表达式:<span class="icon(.*?)><\/span>我有这个字符串:<p style="text-align: center;"><span style="font-size: 1em;">Text 1 <span style="font-weight: bold;">TEXT 2</span><span style="color: #e67e23; font-size: 1.2em;"><span class="icon x-small icon-play"></span>&nbsp;</span><span style="color: #e03e2d;">Text 3</span> <span style="color: #a68965;">Text 4 </span></span><span style="font-size: 0.7em; color: #000000;">Text 5</span></p>我想删除该字符串中的所有标签,除了上面的正则表达式产生的标签之外。所以我会得到这个最终结果:Text 1 Text 2<span class="icon x-small icon-play"></span>&nbsp;Text 3 Text 4 Text 5正如您在此输出中看到的,除了我要查找的标签之外,所有标签都已被清除。我查看了 PHP,strip_tags但不幸的是它们没有将正则表达式作为第二个参数,因此没有执行我正在寻找的操作。我尝试用 a 来做preg_replace,但无法创建如此复杂的正则表达式。知道什么是最好的方法吗,无论是使用正则表达式还是不使用正则表达式?
查看完整描述

1 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

使用

preg_replace('/<span class="icon.*?><\/span>(*SKIP)(*F)|<[^<>]+>/', '', $string)


该表达式将查找<span class="icon....></span>字符串来忽略它们(*SKIP)(*F),然后所有其他标签将被删除(与 匹配<[^<>]+>)。



查看完整回答
反对 回复 2023-09-15
  • 1 回答
  • 0 关注
  • 78 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信