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