PHPで日付のバリデーションを行いたいです
タイトルの通りです。
行いたいバリデーションの内容は以下の3つです。
ユーザーが入力した日付が
・5,10,15,20,25日である
・月末である
・過去30日以内である(1ヶ月に変更になる可能性有)
自分なりに書いてみたコードはこんな感じです。
※$check['Date']には YYYY/mm/dd の形式でDBから取ってきたデータが入っています。
//30日以内
function DateChk30( $check ) {
$today = date("Y/m/d");
$checkunix = strtotime($check['Date']);
$todatunix = strtotime($today);
$diff = ($todatunix - $checkunix ) / ( 60 * 60 * 24);
if ($diff < 30 )
{
return true;
} else {
return false;
}
}
//5,10,15,20,25,月末
function DateChk( $check ) {
$wk = date('Y/m/t'); //月末
$tmp = substr($check['Date'], -2); //後ろ2文字
$tmp = (int)$tmp;
if ( ($tmp % 5) == 0 || $check['Date'] == $wk)
{
return true;
} else {
return false;
}
}
これだと31日が存在する月の30日でも通してしまうので困っています。
switchを使って1日ずつ設定するしかないでしょうか。。
何か良い方法がありましたらご教授ください。
また、全体的に拙いソースだと思いますので、綺麗に書ける書き方があればご教授ください。
よろしくお願いします。