3v4l.org

run code in 300+ PHP versions simultaneously
<?php $string = 'A1-3, 5B-7'; echo preg_replace_callback_array( [ '/(\d+)([A-Z]+)-(\d+)/' => fn($m) => implode($m[2] . ', ', range($m[1], $m[3])) . $m[2], '/([A-Z]+)(\d+)-(\d+)/' => fn($m) => $m[1] . implode(', ' . $m[1], range($m[2], $m[3])), ], $string );

preferences:
34.82 ms | 406 KiB | 5 Q