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)) { $result[$matches[1]] = ['num1' => $matches[2], 'num2' => $matches[3], 'num3' => $matches[4]]; } } 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:
85.93 ms | 1297 KiB | 4 Q