Php 如何检查月份的错误';s天
我正在尝试进行用户注册。我只想问一下使用3个输入的日期type=“text”如何使用PHP清理月、日和年。如果二月是闰年或十一月,则只有30天,用户输入31天。谢谢大家Php 如何检查月份的错误';s天,php,regex,datetime,Php,Regex,Datetime,我正在尝试进行用户注册。我只想问一下使用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
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.';
}
}
if(isset($\u POST['submit'])){
$yy=preg#u replace('#[^0-9]#i',''.$#u POST['yy']);
$mm=preg#u replace(“#[^0-9]#i”,“,$”POST['mm');
$dd=preg#u replace(“#[^0-9]#i”,“,$”POST['dd]”);
如果($mm>12){
$error[]=“无效月份”;
}否则,如果($dd>31){
$error[]=“无效日期”;
}否则如果(斯特伦($yy)<4){
$error[]=“无效年份”;
}
}
checkdate功能可能会满足您的需求:
如果日期正确,则返回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-09-12”解析有效日期 或 或者使用Php CheckDate函数检查日期的有效性
bool checkdate ( int $month , int $day , int $year )
你好,大卫,谢谢!我会试试那个检查日期函数。如果其中一个答案是有用的,请考虑“接受”它。谢谢你,先生,我会试试。我用这个代码,它返回false。格式yy mm dd“1992-10-5”如果(preg#u match('#^('#{4})-(d{2})$#',$releasedate,$matches)和checkdate($matches[2],$matches[3],$matches[1]){返回true;}否则{$error[]=“发布日期似乎无效”。;返回false;}我的输入是“mm-dd-YYYYY”,我输入这些“10-5-1992”它返回一条错误消息,可能代码为$yy=preg_replace('#[^0-9]#i','',$_POST['yy'])$mm=预替换(“#[^0-9]#i”、“,$”后['mm'])$dd=preg#u replace('#[^0-9]#i','''.$#u POST['dd'])$发布日期=$yy.-'.$mm.-'.$dd;如果(preg_match(“/([0-9]{2})\/([0-9]{2})\/([0-9]{4})/”,$releasedate,$matches)&&checkdate($matches[1],$matches[2],$matches[0]){return true;}否则{$error[]='发布日期似乎无效。;}
$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
}
bool checkdate ( int $month , int $day , int $year )