如何从bbcode中提取完整图像?

时间:2013-09-29 11:27:21

标签: php regex 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

我需要将标题标记包含在第二次出现中。真的卡住了......

2 个答案:

答案 0 :(得分:1)

使用它来获取图像标记:

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

regex101 demo

i修饰符用于不区分大小写的匹配。

如果您不想获取图片代码,请使用lookarounds:

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

顺便说一句:[^(\[\/IMG\])]+将匹配除([/IM,{{1}以外的任何字符},G]

regex101 demo

)是一个积极的外观,并确保您的匹配前面有(?<=\[img\])

[img]是一个积极的前瞻,确保您的匹配在(?=\[/img\])之后。这些不计为匹配,因此它们不会在您的捕获组中返回。

答案 1 :(得分:0)

您可以尝试:

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