正規表現で値を分解して checkdate 関数でチェックやっただけ。
public static function _validation_valid_date($val) { if (!$val) { return true; } $parts = array(); // 形式はyyyy-mm-dd if (!preg_match('/^([0-9]{4})[\-\/\.](0?[0-9]|1[0-2])[\-\/\.]([0-2]?[0-9]|3[01])$/', $val, $parts)) { return false; } if (checkdate($parts[2], $parts[3], $parts[1]) === true) { return true; } else { return false; } }
日付の比較チェック
引数を1つ追加して比較用のフィールド名を指定
public static function _validation_compare_date($val, $field) { if (!$val) { return true; } if (!Input::post($field)) { return true; } $tmp_val_st = strtotime(Input::post($field)); $tmp_val_ed = strtotime($val); if ($tmp_val_st > $tmp_val_ed) { return false; } return true; }
もっときれいなソースをかけるようになりたい・・・
※
いままで正規表現するとき ereg 関数を使ってたけどこれは PHP5.3 から非推奨となってました。ereg 関数を使っている場合は preg_match 関数に置き換えないと・・・知らんかった。
PHP: ereg - Manual
PHP: preg_match - Manual
0 件のコメント:
コメントを投稿