【PHP】日付の形式 & 妥当性チェック(SAMPLE)
PHPで日付の形式と妥当性を同時にチェックする関数のサンプル
環境:PHP 7.4.4
日付の形式 & 妥当性をチェックする
(形式)YYYY-MM-DDとする
年(西暦 )4ケタ
月 2ケタ(もしくは1)
日 2ケタ(もしくは1)
それぞれ間に-(ハイフン)を挟む。
(妥当性)入力された日付が存在し得るかを確認する
(13月や、うるう年ではない年の2月29日など、暦上存在しない月日ではないか)
以下サンプルの関数、引数 $valueにフォームから入力した日付の値などを渡して検証する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
function validateDateFormat($value) { if(preg_match('/\A[0-9]{4}\/[0-9]{1,2}\/[0-9]{1,2}\z/', $value) == false) { echo '日付の形式が正しくありません。'; return; } list($year, $month, $day) = explode('/', $value); if(checkdate($month, $day, $year) == false) { echo '日付が正しくありません。'; return; } } |
以降、形式と妥当性チェックの詳細解説。
形式(YYYY-MM-DD)を検証
YYYY-MM-DD形式をPHPのpreg_match関数を使用して正規表現でチェックする。
1 2 3 4 5 |
if(preg_match('/\A[0-9]{4}\/[0-9]{1,2}\/[0-9]{1,2}\z/', $value) == false) { echo '日付の形式が正しくありません。'; return; } |
妥当性を検証
検証する値を配列の要素として分ける。
「年」 $year
「月」 $month
「日」 $day
PHPのcheckdate関数の引数へ年月日要素を渡して妥当性を検証する。
(引数の順番に注意)
1 2 3 4 5 6 7 |
list($year, $month, $day) = explode('/', $value); if(checkdate($month, $day, $year) == false) { echo '日付が正しくありません。'; return; } |