如何检查月份的错误

时间:2013-10-04 04:06:15

标签: php regex datetime

我试图进行用户注册。我只想询问使用3输入类型的日期=" text"如何使用PHP清理月,日和年。如果2月份是闰年或11月份只有30天且用户输入31个。谢谢大家!

if (isset($_POST['submit'])) {
    $yy = preg_replace('#[^0-9]#i','',$_POST['yy']);
    $mm = preg_replace('#[^0-9]#i','',$_POST['mm']);
    $dd = preg_replace('#[^0-9]#i','',$_POST['dd']);
    if ($mm > 12) {
        $error[] = 'Invalid month.';
    } else if ($dd > 31) {
        $error[] = 'Invalid day.';
    } else if (strlen($yy) < 4) {
        $error[] = 'Invalid year.';
    }
}

3 个答案:

答案 0 :(得分:0)

checkdate功能可能是您正在寻找的内容:http://www.php.net/manual/en/function.checkdate.php

if (checkdate(intval($mm) . ',' . intval($dd) . ',' .  intval($yy))) echo 'valid!';  

答案 1 :(得分:0)

检查日期是否正确返回true,否则为false

 <?php
    var_dump(checkdate(12,31,-400));  ///bool(false)
    echo "<br>";
    var_dump(checkdate(2,29,2003));  ////bool(false)
    echo "<br>";
    var_dump(checkdate(2,29,2004));  ////bool(true)
    ?>

答案 2 :(得分:0)

以下正则表达式可以验证正确和错误的日期,但是你需要对代码进行一些重构,即

  

有效日期解析由以下正则表达式“2013-09-12”;

$date = $_POST['yy'].'-'.$_POST['mm'].'-'.$_POST['dd'];

$date = $yy.'-'.$mm.'-'.$dd';   // after retrieving values of month, year, day

if (preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/",$date))
{
    return true; // date is valid in above define format
}else{
    return false; // invalid date
}

或使用Php CheckDate函数,它检查日期的有效性

bool checkdate ( int $month , int $day , int $year )