PHP筛选器_validate_int用于前面为零的数字

PHP筛选器_validate_int用于前面为零的数字,php,filter-input,Php,Filter Input,我想使用PHP的filter\u输入和filter\u VALIDATE\u INT来验证时间,以小时和分钟为单位。问题是,当时间为03:07时,此函数返回false $hours_range = array ( 'options' => array ( 'min_range' => 0, 'max_range' => 23 ) ); $minutes_range = array ( 'options' => array ( 'min_range

我想使用PHP的filter\u输入和filter\u VALIDATE\u INT来验证时间,以小时和分钟为单位。问题是,当时间为03:07时,此函数返回false

$hours_range = array (
'options' => array (
    'min_range' => 0,
    'max_range' => 23
)
);

$minutes_range = array (
'options' => array (
    'min_range' => 0,
    'max_range' => 59
)
);

filter_input(INPUT_POST, 'hour', FILTER_VALIDATE_INT, $hours_range)

filter_input(INPUT_POST, 'minute', FILTER_VALIDATE_INT, $minutes_range)

嗯。。。你可以在这里尝试另一个过滤器-我可能会尝试
filter\u VALIDATE\u REGEXP
。可能是这样的:

$mins = filter_input(INPUT_POST, 'hour', FILTER_VALIDATE_REGEXP, ['options' => [
    'regexp' => '/\d{1,2}/']
]);

仅仅添加regex
\d{1,2}
作为示例,显然您可能希望在这里定义更好的内容。或者,您可以使用
FILTER\u CALLBACK
并定义一个回调,在该回调中,您可以检查您的值是否为
int
,并且显式地在所需的数值范围内。

嗯。。。你可以在这里尝试另一个过滤器-我可能会尝试
filter\u VALIDATE\u REGEXP
。可能是这样的:

$mins = filter_input(INPUT_POST, 'hour', FILTER_VALIDATE_REGEXP, ['options' => [
    'regexp' => '/\d{1,2}/']
]);

仅仅添加regex
\d{1,2}
作为示例,显然您可能希望在这里定义更好的内容。或者,您可以使用
FILTER\u CALLBACK
并定义一个回调,在该回调中,您可以检查您的值是否为
int
,并且显式地在所需的数值范围内。

不是冒号造成了问题吗?我通常让DateTime类作为回调过滤器的一部分来执行这种验证。Nm,在您的问题中遗漏了一些内容。不是冒号造成了问题吗?我通常让DateTime类作为回调筛选器的一部分来执行此类验证。Nm,遗漏了您的问题中的一些内容。与regexp的接触很好。与regexp的接触很好。