2013-09-29 37 views
0

我有這樣的BBCode。如何從bbcode中提取完整的圖像?

[IMG]art_74e7e4f8811380426577.jpeg[/IMG] [IMG]art_74e7e4f8811380426595.jpeg[TITLE]title is always needy[/TITLE][/IMG] 

我需要提取兩個圖像。所以我preg_match_all是:

preg_match_all('/\[IMG\][^(\[\/IMG\])]+/', $body, $matches); 

,給了我這樣的:

[0] => [IMG]art_74e7e4f8811380426577.jpeg 

[1] => [IMG]art_74e7e4f8811380426595.jpeg 

我需要包括標題標籤進入第二occurence。很堅持...

回答

1

使用該得到的圖像標籤,以及:

preg_match_all('~\[img\].*?\[/img\]~i', $body, $matches); 

regex101 demo

i修改是不區分大小寫的匹配。

如果你不想要得到的圖像標記,使用lookarounds:

preg_match_all('~(?<=\[img\]).*?(?=\[/img\])~i', $body, $matches); 

順便說一句:[^(\[\/IMG\])]+將任何字符匹配除了([/IMG])

regex101 demo

(?<=\[img\])是一個積極的回顧後,並確保你的比賽有[img]之前和

(?=\[/img\])是一個積極的向前看,這使得確定後,你的對手有[/img]。那些不算作匹配,所以他們不會被歸還到你的捕獲組中。

0

你可以試試:

preg_match_all('~\[IMG\].*?\[/IMG\]+~i', $body, $matches);