3v4l.org

run code in 300+ PHP versions simultaneously
<?php $string = '3-6,8,12,14-50'; $result = []; foreach (explode(',', $string) as $v) { if (sscanf($v, '%d-%d', $start, $end) === 1) { $result[] = $start; } else { array_push($result, ...range($start, $end)); } } var_export($result);

preferences:
26.02 ms | 408 KiB | 5 Q