close

判斷日期是否合法

 

一般來說判斷日期的格式用PHP內建的preg_match()就夠了。

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 格式正確

文章轉載https://cumi.co/notes/php/16

arrow
arrow
    創作者介紹
    創作者 Johnson峰 的頭像
    Johnson峰

    Johnson峰的部落格

    Johnson峰 發表在 痞客邦 留言(0) 人氣()