0

我一直在谷歌搜索,但我无法弄清楚要使用哪些关键字。

我正在保存用户的出生日期,并且我想确保格式为 YYYY-MM-DD。
我在想类似的事情:

if(!ctype_digit(str_replace("-", "", $dob)) || strlen(str_replace("-", "", $dob)) != 8)
{
   echo "Incorrect format: date of birth";
}


为此,我只需要使用 strlen() 替换三个 - 字符。如果大于或小于 3,则回显格式不正确。我如何实现这一目标?或者,还有更好的方法?

4

3 回答 3

3

使用正则表达式怎么样?

if ( !preg_match( "/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/", $dob) )
{ 
    echo "Invalid date.";
}
于 2013-03-07T19:22:05.540 回答
2

要查找许多示例,请搜索“验证日期”,或者在您的情况下,要查找 php 示例,请尝试“php validate date format”——您会看到大多数示例都是用正则表达式解决的,这就是您的票的事情。正则表达式可以帮助您验证日期、电子邮件地址格式、满足最低要求的密码输入(例如,至少 8 个字符、至少一个数字和一个大写字母等)

这是一个这样的例子:

if(preg_match('/\d{4}-\d{2}-\d{2}/',$date)){
   // good date
}else{
   // bad date
}
于 2013-03-07T19:29:24.513 回答
2

您还应该检查日期是否为实际日期;不仅仅是它看起来像一个实际的日期。

if (!preg_match("/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/D", $dob))
{ 
    echo 'Invalid date';
}

else
{

    list($year, $month, $day) = explode('-', $dob);

    if (!checkdate((int) $month, (int) $day, (int) $year))
    {
        echo 'Invalid date';
    }

}

1988-06-31毕竟你不想接受。

于 2013-03-07T19:30:34.590 回答