仅在一定时间内替换字符

时间:2013-03-07 19:17:05

标签: php

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

我正在保存用户的出生日期,我想确保格式为YYYY-MM-DD 我想的是:

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


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

3 个答案:

答案 0 :(得分:3)

如何使用正则表达式?

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

答案 1 :(得分:2)

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

以下是一个这样的例子:

if(preg_match('/\d{4}-\d{2}-\d{2}/',$date)){
   // good date
}else{
   // bad date
}

答案 2 :(得分: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

相关问题