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的专业知识
你正在使用^在正则表达式字符串的末尾,^的含义是比较字符串的开头.
另外,正如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:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- PHP编程:PHP实现UTF-8文件BOM自动检测与移除实例
- php – Paypal NVP API – 继续收到错误81002
- php setcookie(name, value, expires, path, dom
- PHP+jQuery+Ajax实现分页效果 jPaginate插件的应
- PHP 8 新特性之 Attributes (注解)
- php – Faceted Search With(out)Solr
- 解析php中array_merge与array+array的区别
- php – 重命名900kb的pdf文件需要很长时间
- UVA 11646 - Athletics Track(计算几何)
- php – 安装AjaXplorer时出错