删除位于<b> </b>中间的文本

时间:2010-02-15 01:33:49

标签: php regex

我在<b></b> Eg中间有文字:

La  <b>la</b>: the  1  <br></br>Aventuroj  <b>aventuro</b>: adventure  2  <br></br>de  <b>de</b>: by, from, of, since  3  <br></br>Mirlando  <b>miri</b>: marvel, marvel at, wonder<br/><b>lando</b>: country, land  4  <br></br>by  <b>ba</b>: bah, nuts, pooh  5  <br></br>for  <b>for</b>: away  6  <br></br>

我想要一个可以剥离文本的正则表达式和字符串中的<b></b>

由于

★✩

2 个答案:

答案 0 :(得分:4)

最简单的方法是使用preg_replace()

$output = preg_replace('!<b>.*?</b>!s', '', $input);

最后的s是一面旗帜。请参阅Pattern Modifiers以获取标志列表。

  

s (PCRE_DOTALL)

     

如果设置了此修改器,则为点   模式中的元字符匹配   所有字符,包括换行符。   没有它,排除了换行符。   这个修饰符相当于Perl   / s修饰符。一个负面的类,如   [^ a]始终匹配换行符   字符,与设置无关   这个修饰语。

一般来说,正则表达式是查询和操作HTML或XML的糟糕工具。 PHP有许多内置的HTML解析器,对于强大的解决方案,你应该使用它们作为一般规则。

答案 1 :(得分:0)

preg_replace("/<b>(.*?)<\/b>/ism","",$str);