You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP移除含特定role属性的标签问题求助

问题分析与解决方案

你的正则匹配逻辑完全错误,这是导致失效的核心原因:

  • 原正则开头写的~&lt;role=&quot;button&quot;,试图匹配以<role="button"开头的标签,但实际你的标签是<span ... role="button",role属性是span标签内的一个属性,并非标签名,所以根本匹配不到目标内容。
  • 另外,原正则的分组和匹配范围也没有覆盖完整的标签结构,无法正确捕获从起始标签到闭合标签的全部内容。

修正后的正则代码

$str = 'This is a test buton. &lt;span id=&quot;UmniBooking_36&quot; class=&quot;insideB&quot; type=&quot;Form&quot; style=&quot;cursor: pointer;color:&quot; role=&quot;button&quot; &gt;Click here&lt;/span&gt;';
// 匹配包含role="button"的任意标签(包括其内容和闭合标签)
$str = preg_replace('~&lt;([a-z]+)\b[^&gt;]*role=&quot;button&quot;[^&gt;]*&gt;(.*?)&lt;/\\1&gt;~Usi', "", $str);
echo $str;

正则说明

  • &lt;([a-z]+)\b:匹配标签的起始部分,捕获标签名(比如span)到分组1,\b确保是完整的标签名
  • [^&gt;]*role=&quot;button&quot;[^&gt;]*&gt;:匹配标签内任意位置的role="button"属性,前后的[^&gt;]*表示标签内其他任意内容(直到标签闭合符>)
  • (.*?):非贪婪匹配标签内的文本内容
  • &lt;/\\1&gt;:匹配对应的闭合标签,\\1引用分组1捕获的标签名,确保起始和闭合标签一致
  • 修饰符Usi:U启用非贪婪模式,s让.匹配换行符,i忽略大小写(可选,根据需求调整)

内容的提问来源于stack exchange,提问作者lStoilov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 21:57:35