正規表現で値を分解して 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 件のコメント:
コメントを投稿