<?php
$input = '1, 4, 7, 20-25, 31, 46, 100';
$entries = array_map( 'trim', str_getcsv( $input));
$result = array();
foreach( $entries as $entry) {
if( strpos( $entry, '-') !== false) {
list( $start, $end) = explode( '-', $entry);
$result = array_merge( $result, range( $start, $end));
} else {
$result[] = $entry;
}
}
print_r( $result);
echo implode( ', ', $result);
preferences:
40.4 ms | 402 KiB | 5 Q