3v4l.org

run code in 500+ PHP versions simultaneously
<?php $data = [ 'aaa|45.85[u]52.22 - 43.75 - 36.5[d]25.75', 'bbb|238.4[u]345.45 - 24.1[d]13.85 - 56.4[d]56' ]; $result = []; foreach ($data as $element) { if (preg_match("#^([^|]+)\|(?:[^\]]+\])?(\S+) - (?:[^\]]+\])?(\S+) - (?:[^\]]+\])?(\S+)$#", $element, $matches)) { unset($matches[0]); $result[array_shift($matches)] = array_combine(['num1', 'num2', 'num3'], $matches); } } var_export($result);
Output for 7.4.0 - 7.4.33, 8.0.1 - 8.0.30, 8.1.0 - 8.1.34, 8.2.0 - 8.2.31, 8.3.0 - 8.3.31, 8.4.1 - 8.4.22, 8.5.0 - 8.5.7
array ( 'aaa' => array ( 'num1' => '52.22', 'num2' => '43.75', 'num3' => '25.75', ), 'bbb' => array ( 'num1' => '345.45', 'num2' => '13.85', 'num3' => '56', ), )

preferences:
106.75 ms | 1297 KiB | 4 Q