Как получить содержимое между строчками в PHP
Делается это вот так
$subject = "яблоко красное и [зеленое] яблоко и еще [одно] красное яблоко и [еще] одно яблоко, зеленое"; $pattern = '/\[(.+?)\]/'; preg_match_all($pattern, substr($subject,3), $matches); print_r($matches);
Во-первых, вам нужно использовать ленивый квантификатор - добавить знак вопроса после ".+". Таким образом поиск будет производится до первого совпадения, а не до последнего. Во-вторых, нужно использовать preg_match_all, если вам нужны все совпадения.