function range_array($r) { $firstIsNegative = false; if(strpos($r, "-") == 0) { $firstIsNegative = true; $r = substr($r, 1); } $r = explode("-", $r, 2); if($firstIsNegative) { $r[0] = "-" . $r[0]; } $return = array(); for($i = intval($r[0]); $i <= intval($r[1]); $i++) { array_push($return, $i); } return($return); } var_dump(range_array("5-10")); //5 bis 10 var_dump(range_array("-5-5")); //-5 bis 5 var_dump(range_array("-10--5")); //-10 bis -5