Получение числовых символов из строки

У меня есть строка вроде этого –

[ [ -2, 0.5 ], 

Я хочу получить числовые символы и поместить их в массив, который будет выглядеть следующим образом:

 array( [0] => -2, [1] => 0.5 ) 

Каков наилучший способ сделать это?

Редактировать:

Более подробный пример

 [ [ -2, 0.5, 4, 8.6 ], [ 5, 0.5, 1, -6.2 ], [ -2, 3.5, 4, 8.6 ], [ -2, 0.5, -3, 8.6 ] ] 

Я прохожу через эту матрицу по строкам, и я хочу извлечь числа в массив для каждой строки.

Проще всего использовать регулярное выражение и preg_match_all() :

 preg_match_all( '/(-?\d+(?:\.\d+)?)/', $string, $matches); 

Полученные $matches[1] будут содержать точный массив, который вы ищете:

 array(2) { [0]=> string(2) "-2" [1]=> string(3) "0.5" } 

Регулярное выражение:

 ( - Match the following in capturing group 1 -? - An optional dash \d+ - One or more digits (?: - Group the following (non-capturing group) \.\d+ - A decimal point and one or more digits ) ? - Make the decimal part optional ) 

Вы можете видеть, как он работает в демо .

Изменить. Поскольку OP обновил вопрос, представление матрицы можно легко проанализировать с помощью json_decode() :

 $str = '[ [ -2, 0.5, 4, 8.6 ], [ 5, 0.5, 1, -6.2 ], [ -2, 3.5, 4, 8.6 ], [ -2, 0.5, -3, 8.6 ] ]'; var_dump( json_decode( $str, true)); 

Преимущество здесь в том, что не существует неопределенности или регулярного выражения, и он будет правильно вводить все отдельные элементы (как ints или float в зависимости от его значения). Таким образом, выведенный выше код выводит :

 Array ( [0] => Array ( [0] => -2 [1] => 0.5 [2] => 4 [3] => 8.6 ) [1] => Array ( [0] => 5 [1] => 0.5 [2] => 1 [3] => -6.2 ) [2] => Array ( [0] => -2 [1] => 3.5 [2] => 4 [3] => 8.6 ) [3] => Array ( [0] => -2 [1] => 0.5 [2] => -3 [3] => 8.6 ) )