我想检查一个日期格式,看看我能否检查数据变量具有特定格式如MM-DD-YYYY。如果没有,则退出()。我不知道如何检查格式,如果有人能帮助我,我将不胜感激。谢谢...如何检查在PHP中的数据格式
$date=05/25/2010;
if(XXXXX){
// do something....
}
我想检查一个日期格式,看看我能否检查数据变量具有特定格式如MM-DD-YYYY。如果没有,则退出()。我不知道如何检查格式,如果有人能帮助我,我将不胜感激。谢谢...如何检查在PHP中的数据格式
$date=05/25/2010;
if(XXXXX){
// do something....
}
使用正则表达式,如其他人所说。然而之前发布的版本会接受99/99/9999的无效日期。这里有一个改进的正则表达式(从here lifed)
$date_regex = '!^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d$!';
if (preg_match($date_regex, $date)) {
// do something
}
它只会采取有效日期,它也将接受不同的分隔符(如2002年5月20日和2002年5月2日)。
如果你问我,强迫用户输入特定格式的用户体验不好。您可以使用strtotime()处理不同的格式。
不错....非常感谢! – user401184 2010-07-24 18:51:55
谢谢你。我还没有投票给你们。投票给我,让我到15声望,我给你所有+1 – user401184 2010-07-24 18:57:42
如果我只想要两种格式只有mm-dd-yyyy或yyyy-mm-dd,我应该创建两个正则表达式吗?谢谢。 – user401184 2010-07-24 19:00:06
if(preg_match("/([0-9]{2})\/([0-9]{2})\/([0-9]{4})/"))
{
do something
}
注意:以无效输入(如00/00/0000) – NullUserException 2010-07-24 18:41:21
谢谢你。我还没有投票给你们。投票给我,让我15声望,我给你所有+1 – user401184 2010-07-24 18:56:20
如果你想这样做是为了限制用户的输入,你总是可以在用户输入使用strtotime()和转换它转换为unix时间戳,然后使用date()函数来显示它的方式。
如果你真的想确定它是否处于某种格式,或只需要某种格式,具有正则表达式的preg_match()会有帮助,我相信他们在那个页面上有解析日期的例子。如果没有它会是这样的:
if (preg_match('~[0-9]{2}-[0-9]{2}-[0-9]{4}~', $dateStr)) { echo 'Correct format'; }
与明显的缺陷是日期可能通过格式测试,但可能不是一个有效日期。在我看来,接受用户输入中的任何日期,并使用strtotime/date来达到你想要的格式。
非常好的一个。非常感谢。 – user401184 2010-07-24 18:51:02
谢谢你。我还没有投票给你们。投票给我,让我的15声望,我给你所有+1 – user401184 2010-07-24 18:55:46
如果我理解正确,你想检查一个字符串,以确保它遵循MM-DD-YYYY模式?
如果是这样,我会建议两个检查:一个以确保它遵循数字的一般模式,另一个检查月份是第一个和第二个。
function checkDate($date)
{
if (preg_match("/[0|1][0-9]/[0-9][1-9]/[0-9]{4}/",$date)
{
if (substr($date,0,2)<=12 && substr($date,3,2)<=31)
{
return true;
}
}
return false
}
更新:加在三天的检查,以确保它是有效的,基于NullUser的评论
这仍然需要无效输入,如12/99/2000 – NullUserException 2010-07-24 18:40:54
谢谢你。我还没有投票给你们。投票给我,让我15声望,我给你所有+1 – user401184 2010-07-24 18:57:00
谢谢你们。我还没有投票给你们。 投票给我,使我达到15的声望,我给你所有+1 ..:D – user401184 2010-07-24 18:52:40