一般來說判斷日期的格式用PHP內建的preg_match()就夠了。
<?php $d = "2015-02-07"; if(preg_match("/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/", $d)){ echo "格式正確"; }else{ echo "格式錯誤"; } ?>
但如果使用者惡意輸入2015-02-31,這樣不合理的日期,就很難判斷了,因此底下我結合內建preg_match()跟checkdate(),提供驗證日期正確性的函數。
<?php function isDate($str){ if(!preg_match("/^[0-9]{4}-[1-12]{2}-[1-31]{2}$/", $str)){ return false; } $__y = substr($str, 0, 4); $__m = substr($str, 5, 2); $__d = substr($str, 8, 2); return checkdate($__m, $__d, $__y); } ?>
<?php $a = "2015-02-30"; if(isDate($a)){ echo $a." 格式正確"; }else{ echo $a." 格式錯誤"; } $b = "2015-12-31"; if(isDate($b)){ echo $b." 格式正確"; }else{ echo $b." 格式錯誤"; } ?>
2015-02-30 格式錯誤 2015-12-31 格式正確
酷米 © All Rights Reserved.