3v4l.org

run code in 500+ PHP versions simultaneously
<?php $string = 'A1-3, A14, 5B-7'; $result = []; foreach (explode(', ', $string) as $value) { if (sscanf($value, '%[A-Z]%d-%d', $letter, $low, $high) === 3) { for ($x = $low; $x <= $high; ++$x) { $result[] = $letter . $x; } } elseif (sscanf($value, '%d%[A-Z]-%d', $low, $letter, $high) === 3) { for ($x = $low; $x <= $high; ++$x) { $result[] = $x . $letter; } } else { $result[] = $value; } } var_export($result);
Output for 8.0.1 - 8.0.30, 8.1.0 - 8.1.34, 8.2.0 - 8.2.30, 8.3.0 - 8.3.30, 8.4.1 - 8.4.18, 8.5.0 - 8.5.3
array ( 0 => 'A1', 1 => 'A2', 2 => 'A3', 3 => 'A14', 4 => '5B', 5 => '6B', 6 => '7B', )

preferences:
64.37 ms | 1112 KiB | 4 Q