2010-02-15 87 views
0

中间删除的文字我已经<b></b>例如,中间文字:是在<b></b>

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>从字符串

感谢

★✩

+0

这让我想起了一个半著名帖子:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – jjnguy

回答

4

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

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

在端的s是一个标志。请参阅Pattern Modifiers以获取标志列表。

小号(PCRE_DOTALL)

如果设定了此修正中,点 元字符中的模式匹配, 所有字符,包括换行。没有它,换行符不包括在内。 此修饰符相当于Perl的 /s修饰符。否定类如 [^ a]总是匹配换行符 字符,与此修饰符的设置 无关。

但是一般来说,正则表达式对于查询和操作HTML或XML是一个糟糕的工具。 PHP有许多内置的HTML解析器,并且对于一个可靠的解决方案,您应该使用这些解决方案作为一般规则。

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