0

我正在尝试进行用户注册。我只想询问使用 3 个输入 type="text" 的日期如何使用 PHP 清理月、日和年。如果二月是闰年或十一月只有 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.';
    }
}
4

3 回答 3

0

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

if (checkdate(intval($mm) . ',' . intval($dd) . ',' .  intval($yy))) echo 'valid!';  
于 2013-10-04T04:12:19.643 回答
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)
    ?>
于 2013-10-04T04:15:01.473 回答
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 )
于 2013-10-04T04:15:13.747 回答