PHPでpreg_match()
を使って日付のフォーマットを簡単にチェックすることができますが、同時に日付の妥当性をチェックする形にしてみます。
よくあるのは2月31日とかの日は存在しませんよね。そういう場合、checkdate()
を使って妥当性をチェックします。
/** * 日付フォーマット検証 * * @param string $value 日付フィールド入力値 * @return bool */ private function isDate($value): bool { if (preg_match("/^[0-9]{4}\/(0[1-9]|1[0-2])\/(0[1-9]|[1-2][0-9]|3[0-1])$/", $value)) { [$y, $m, $d] = explode('/', $value); if (checkdate((int)$m, (int)$d, (int)$y)) { return true; } } return false; }
ちな、日付チェック系の他記事はフォーマットと妥当性がひとまとめになったものが少ない感じなので、記事にしました。