php – is_date()发生故障

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – is_date()发生故障脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个 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的专业知识

@H_301_20@
@H_301_20@
你正在使用^在正则表达式字符串的末尾,^的含义是比较字符串的开头.

另外,正如hjpotter92建议的那样,你可以简单地使用is_numeric(strtotime($str))

你的功能应该是这样的:

public function is_Date($str){ 
    $str=str_replace('/','-',$str);  //see explanation below for this replacement
    return is_numeric(strtotime($str)));
}

Documentation says:

@H_301_20@
本图文内容来网友网络收集整理提供,作为学习参考使用,版权属于原作者。

脚本宝典总结

以上是脚本宝典为你收集整理的php – is_date()发生故障全部内容,希望文章能够帮你解决php – is_date()发生故障所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。