2010-02-15 62 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);