0

我有一个这样的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

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

4

1 回答 1

2

也可以使用它来获取图像标签:

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

正则表达式101演示

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

如果您不想获取图像标签,请使用环视:

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

顺便说一句:[^(\[\/IMG\])]+将匹配除(, [, /, I, M, G, ],之外的任何字符)

正则表达式101演示

(?<=\[img\])是一个积极的向后看,并确保你的比赛[img]在它之前,并且

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

于 2013-09-29T11:30:30.753 回答