У меня проблема, которая кажется простой на первый взгляд, но побеждает мои скудные навыки работы с регулярными выражениями. У меня есть строка, которую мне нужно преобразовать в массив, а затем обработать значения соответствующим образом, что достаточно просто, но формат строки не может быть изменен (он генерируется в другом месте), и его логика сбивает меня с толку.
Строка:
[6] [2] [3] 12.00; [5] [4]
В основном это набор идентификаторов и десятичных значений (в данном случае id 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);
, но теряет корреляцию между идентификаторами и значениями.