我有一个
PHP方法检查是否
传入参数是一个日期.这是它:
public function is_Date($str){
if (is_numeric($str) || preg_match('^[0-9]^', $str)){
$stamp = strtotime($str);
$month = date( 'm', $stamp );
$day = date( 'd', $stamp );
$year = date( 'Y', $stamp );
return checkdate($month, $day, $year);
}
return false;
}
然后,我测试开这样:
$var = "100%";
if(is_Date($var)){
echo $var.' '.'is a date';
}
$var = "31/03/1970";
if(is_Date($var)){
echo $var.' '.'is a date';
}
$var = "31/03/2005";
if(is_Date($var)){
echo $var.' '.'is a date';
}
$var = "31/03/1985";
if(is_Date($var)){
echo $var.' '.'is a date';
}
请注意,每个ifs还有一个else语句,如:
else{
echo $var.' '.'is not a date'
}
OUTPUT:
100% is a Date
31/03/1970 is a Date
31/03/2005 is a Date
31/03/1985 is a Date
我的问题是,为什么100%显示为日期,为什么31/03/1985不被视为日期?
关于为什么的任何线索将受到高度赞赏,因为我不是在Regex的专业知识