3v4l.org

run code in 300+ 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);

preferences:
32.49 ms | 407 KiB | 5 Q