我一直在谷歌上搜索,但我无法弄清楚要使用哪些关键字。
我正在保存用户的出生日期,我想确保格式为YYYY-MM-DD
我想的是:
if(!ctype_digit(str_replace("-", "", $dob)) || strlen(str_replace("-", "", $dob)) != 8)
{
echo "Incorrect format: date of birth";
}
为此,我需要使用strlen()来替换三个字符。如果它多于或少于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
。