将所有方括号与preg_match_all`匹配

时间:2011-03-15 16:02:06

标签: php preg-match-all

我正在尝试匹配字符串中的多个方括号标记以从字符串中提取它们。

例如:

$string = 'Request: [CODE]sksdjdiwjwdwdkw[/CODE] Response: [CODE]sksdjdiwjwdwdkw[/CODE]';

preg_match_all('/\[CODE\](.*)\[\/CODE\]/',$string)匹配第一个[CODE]和最后一个[/CODE]之间的所有内容。

有没有人知道表达式是如何构成的?

2 个答案:

答案 0 :(得分:3)

尝试让你的比赛不贪婪:

preg_match_all('/\[CODE\](.*?)\[\/CODE\]/',$string)
                          ^^^

答案 1 :(得分:1)

不要使用.*(比非贪婪更快)

preg_match_all('/\[CODE\]([^\[]+)\[\/CODE\]/',$string);