$options = array();
$options['options']['min_range'] = 0;
$options['options']['max_range'] = 24;
$options['flags'] = FILTER_FLAG_ALLOW_OCTAL;
var_dump(filter_var(54, FILTER_VALIDATE_INT, $options)); //bool(false)
var_dump(filter_var(21, FILTER_VALIDATE_INT, $options)); //int(21)
Так работает.
О FILTER_FLAG_ALLOW_OCTAL
:
Считает входные данные, начинающиеся с нуля (0), восьмеричными числами. Это только позволяет последующим цифрам быть 0-7. Согласно этому:
var_dump(filter_var(06, FILTER_VALIDATE_INT, $options)); //int(6)
var_dump(filter_var(09, FILTER_VALIDATE_INT, $options)); //int(0)