在PHP中捕获两组方括号之间的文本

在PHP中捕获两组方括号之间的文本,php,regex,Php,Regex,我需要一些方法来捕获两组方括号之间的文本。 例如,以下字符串: test test [foo] bar [/foo] test 我需要输出bar,但“bar”是一个可变词 如何获得所需的输出 也许用这个简单的表达: preg_match('/\](.*)\[/', 'test test [foo] bar [/foo] test', $match); echo trim($match[1]); 预匹配'/\[^\]]+\].\[\/\1\]/',$text 使用反向引用将第一个方括号标记与其

我需要一些方法来捕获两组方括号之间的文本。 例如,以下字符串:

test test [foo] bar [/foo] test
我需要输出bar,但“bar”是一个可变词


如何获得所需的输出

也许用这个简单的表达:

preg_match('/\](.*)\[/', 'test test [foo] bar [/foo] test', $match);
echo trim($match[1]);
预匹配'/\[^\]]+\].\[\/\1\]/',$text

使用反向引用将第一个方括号标记与其结束标记相匹配。注意,如果您希望允许嵌套相同的标记,或者将嵌套的标记视为纯文本以外的任何内容,那么这将不起作用