PHP 不允许在字符串日期中使用格式 d/m/Y


PHP don't allow format d/m/Y in String date

我想验证一个应该保存为日期的字符串。我希望用户在此format ('d-m-Y)的表单中给出日期。我正在使用此功能来检查是否给出了有效日期:

function isDateValid($birthdate)
{
  $date = date('Y-m-d', $birthdate);        
  $stamp = strtotime(str_replace('/', '-', $date), $date);
  if (!is_numeric($stamp))
     return FALSE;
  //checkdate(month, day, year)
  if ( checkdate(date('n', $stamp), date('d', $stamp), date('Y', $stamp)) )
  {
     return TRUE;
  }
  return FALSE;
} 

这适用于此格式 d-m-y 中的每个条目。但是当这样的格式被赋予 d/m/Y 时,它仍然返回 true,但日期像这样保存在数据库中。

我该怎么做才能确保这种格式的条目"d/m/y"无法保存在数据库中。

提前致谢

找到解决方案

好的,我想我找到了解决方案

if(!preg_match('/^('d'd?)-('d'd?)-('d'd'd'd)$/', $birthdate, $matches))
{
  return false;
}
return checkdate($matches[2], $matches[1], $matches[3]);
我检查

是否给出了正确的模式,之后我检查它是否是一个有效的日期。这对我来说很好用,所以,谢谢!!

您可以使用

正则表达式模式,例如: *'d{4}-'d{2}-'d{2}*检查格式