使用 preg_match 查找括号内的所有文本

Using preg_match to find all text between brackets

我正在尝试在文档中搜索标签,以便稍后替换它们。

我正在使用 preg_match,但遇到了一些困难。

preg_match('/\[.*\]/', $haystack, $matches);

正在搜索以下文字

[TODAY_DATE]

回复:付款需求

[地址] [ADDRESS_LINE_2] ...等等

print_r($matches);

returns

Array ( [0] => [TODAY_DATE] )

我应该如何调整我的正则表达式以 return 所有匹配项?

使用preg_match_all。顾名思义,不止一次匹配。

preg_match_all('/\[.*?\]/', $haystack, $matches);
var_dump($matches);

也使用不情愿的量词 .*? 而不是贪婪的量词。