Сопоставьте все квадратные скобки с preg_match_all` - PullRequest
1 голос
/ 15 марта 2011

Я пытаюсь сопоставить несколько квадратных скобок в строке, чтобы извлечь их из строки.

Например:

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

preg_match_all('/\[CODE\](.*)\[\/CODE\]/',$string) соответствует всему между первым [CODE] и последним [/CODE].

Кто-нибудь имеет представление о том, как должно выглядеть выражение?

Ответы [ 2 ]

3 голосов
/ 15 марта 2011

Попробуйте сделать ваш матч нежадным:

preg_match_all('/\[CODE\](.*?)\[\/CODE\]/',$string)
                          ^^^
1 голос
/ 15 марта 2011

Не используйте .* (быстрее, чем не жадный)

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