正则表达式排除嵌套的html标记

时间:2013-09-16 23:15:38

标签: php regex

我有一段文字:

<strong>blalblalba</strong>blasldasdsadasdasd<strong> 3.5m Euros<br>
<span class="style6">SOLD</span></strong>

我要删除<strong> contains $|euros|Euros</strong>

到目前为止,我有:

preg_replace('#<strong>.*?(^<strong>).*?(\$|euros|Euros|EUROS).*?</strong>#is', '', $result);

但是它不起作用......我还试着消极锁定头(?!)但仍然没有工作......

有任何帮助吗?感谢

2 个答案:

答案 0 :(得分:1)

假设你在欧元之前预期有两个音符,我认为这可能是你想要的:preg_replace('#^<strong>.*?<strong>.*?(\$[euros|Euros|EUROS]).*?</strong>#is', '', $result);

答案 1 :(得分:1)

你可以尝试这个,必须使用'Dot-All'修饰符或替换[\ S \ s] -

 # <strong>(?:(?!\1)(?:\$|euros|Euros|EUROS)()|(?!<strong>).)+</strong>\1

 <strong>
 (?:
      (?! \1 )
      (?: \$ | euros | Euros | EUROS )
      ( )
   |  
      (?! <strong> )
      . 
 )+
 </strong>
 \1