Вот два способа сгенерировать нужный многомерный массив пар ключ-значение с помощью preg_split()
...
( Demo )
Подход № 1: Разделение на =
или пробел, за которым следуют 1 или более слов, а затем =
var_export(array_chunk(preg_split('~=| (?=\w+=)~', $text), 2));
Подход № 2: Разделение на каждую клавишу, включая ведущие и обучающие символы всопоставлять, сохранять только ключи и значения
var_export(array_chunk(preg_split('~ ?(\w+)=~', $text, null, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE), 2));
Вывод: (из любого из них)
array (
0 =>
array (
0 => 'key1',
1 => 'value 1',
),
1 =>
array (
0 => 'key2',
1 => 'value 2',
),
2 =>
array (
0 => 'key3',
1 => 'val 3',
),
)
preg_split()
может возвращать только одномерный массив (в данном случае key
, val
, key
, val
, ...), поэтому array_chunk()
используется для генерации желаемой структуры из двух элементов на подмассив.