简体   繁体   English

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

[英]regex exclude nested html tag

i have a piece of text: 我有一段文字:

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

and I want to remove <strong> contains $|euros|Euros</strong> 我想删除<strong> contains $|euros|Euros</strong>

So far I have: 到目前为止,我有:

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

but it is not working... I was trying also negative lock head (?!) but still not working... 但它不起作用......我还在尝试负锁头(?!)但仍然不能正常工作......

Any help? 有帮助吗? Thanks 谢谢

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

You can try this, must use 'Dot-All' modifier or substitute [\\S\\s] - 你可以尝试这个,必须使用'Dot-All'修饰符或替换[\\ S \\ s] -

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

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM