У меня есть проблема, которая на первый взгляд кажется простой, но она превосходит мои скудные навыки работы с регулярными выражениями. У меня есть строка, которую мне нужно преобразовать в массив, а затем соответствующим образом обработать значения, что достаточно просто, но формат строки нельзя изменить (она генерируется где-то еще), и ее логика меня сбивает с толку.
Строка:
По сути, это набор идентификаторов и десятичных значений (в данном случае идентификатор 3 == 12,00). Количество идентификаторов может измениться в любой момент, и десятичные значения могут присутствовать в любом или во всех идентификаторах.
В идеальном мире у меня был бы следующий массив:
Код: Выделить всё
Array (
[0] => Array (
[id] => 6
[num] =>
)
[1] => Array (
[id] => 2
[num] =>
)
[2] => Array (
[id] => 3
[num] => 12.00
)
Etc...
Кто-нибудь из вас, знатоков регулярных выражений, знает, как этого можно добиться с меньшим количеством ругани, чем мне удалось?
На данный момент мне удалось извлечь идентификатор, используя:
Код: Выделить всё
preg_match_all('@\[(.*?)\]@s', $string, $array);
и десятичные дроби с помощью:
Код: Выделить всё
preg_match_all('/([0-9]+[,\.]{1}[0-9]{2})/', $string, $array);
но теряется корреляция между идентификаторами и значениями.
Подробнее здесь:
https://stackoverflow.com/questions/814 ... ays-with-p