从HTML中删除具有特定类的span,但不使用正则表达式删除内容

时间:2015-04-29 13:41:20

标签: php regex html-parsing

以下是示例html

<div>
<span class="target"> Remove  parent span class only and save this text </span>      
</div>

这里我想要html如下,仅使用正则表达式函数

<div>
Remove parent span class only and save this text
</div>

我试过这个:

$html = preg_replace('#<h3 class="target>(.*?)</h3>#', '', $html);

但它不起作用。

1 个答案:

答案 0 :(得分:1)

您匹配错误的标记,h3而不是span 同时检查preg_replace的签名,第二个参数是替换,在你的情况下它是空字符串。

$html = preg_replace('/<(span)[^\>]+>(.*?)<\/\1>/i', '\2', $html);

编辑: 刚注意到op只想删除具有特定类

的跨度
$html = preg_replace('/<(span).*?class="\s*(?:.*\s)?target(?:\s[^"]+)?\s*"[^\>]*>(.*)<\/\1>/i', '\2', $html);

这应涵盖具有任意数量属性和类的跨度,并替换具有类目标的跨度。