日付文字 | 入力チェック結果 |
---|---|
2012/1/1 | 1 |
2012-12-31 | 1 |
2012-2-29 | 1 |
2011-2-29 | |
2012-8-32 | |
20120101 | |
2012/12/12 00:00:00 | 1 |
2012/12/12 12:12:12 | 1 |
2012/12/12 12:12 | 1 |
2012/12/12 12 | 1 |
サンプル
require_once 'input_check.php'; $list=array( '2012/1/1', '2012-12-31', '2012-2-29', '2011-2-29', '2012-8-32', null, '', '20120101', '2012/12/12 00:00:00', '2012/12/12 12:12:12', '2012/12/12 12:12', '2012/12/12 12', ); $ic=new InputCheck(); $data=null; foreach($list as $d){ $ent['d']=$d; $ent['rs']=$ic->isDate($d);//★日付チェック $data[]=$ent; }input_check.php
class InputCheck{ /** * 日時チェック 閏年対応 * @param $strDate 日付文字列 * @return boolean 可否 */ function isDate($strDateTime){ //トリミング $strDateTime=trim($strDateTime); //空であればエラー if (!$strDateTime){return false;} //日時を 年月日時分秒に分解する。 $aryA =preg_split( '|[ /:_-]|', $strDateTime ); foreach ($aryA as $key => $val){ //▼正数以外が混じっているば、即座にfalseを返して処理終了 if ($this->isPNum($val)==false){ return false; } $aryA[$key]=trim($val); } //▼グレゴリオ暦と整合正が取れてるかチェック。(閏年などはエラー) if(!checkdate($aryA[1],$aryA[2],$aryA[0])){ return false; } //▼時刻の整合性をチェック if ($this->checkTime($aryA[3], $aryA[4], $aryA[5])==false){ return false; } return true; } /** * 時刻の整合性をチェック * @param $hou 時 * @param $min 分 * @param $sec 秒 * @return boolean 可否 */ function checkTime($hou,$min,$sec){ if($hou < 0 || $hou > 23){ return false; } if($min < 0 || $min > 59){ return false; } if($sec < 0 || $sec > 59){ return false; } return true; } }