Проблема с preg_match_all().

Sardonix

Новичок
Проблема с preg_match_all().

Уже несколько дней бьюсь об эту функцию как о стену...
Задача такая: имеется строка [quent=10][style=black][position=top]; из нее нужно извлечь то, что находится в квадратных скобках.
В соответствие с описанием эта функция выявляет ВСЕ вхождения заданной регулярки:
задаю условия поиска "выбрать всё, что заключено в квадратные скобки"
PHP:
$str = "[quent=10][style=black][position=top]";  
if (preg_match('/\[((.)*)\]/s', $str, $box) != 0)
   {         
         print_r($box);     
    }
По идее, все, что находится между скобками, должно лежать в кармане $box.
На самом деле имеем в итоге:
Array ( [0] => [quent=10][style=black][position=top] [1] => quent=10][style=black][position=top [2] => p )
Как видно, это не то, что нужно.
Пробовал и другие варианты регулярки, но там результат был еще хлеще.
Плз, подскажите, как правильно составить регулярку для этого случая.
 

Sardonix

Новичок
Автор оригинала: sakon
[m]preg_match_all[/m] + жадность
Большое спасибо, превращение "жадной" звездочки в "ленивую" помогло:
PHP:
$str = "[quent=10][style=black][position=top]";
if (preg_match_all('/\[ (.*?) \]/xs', $str, $box) != 0)     
  {         
      print_r($box);     
  }
Результат:
Array ( [0] => Array ( [0] => [quent=10] [1] => [style=black] [2] => [position=top] ) [1] => Array ( [0] => quent=10 [1] => style=black [2] => position=top ) )
 
Сверху