出于某种原因,在表格中输入“2014 12 12”时,这总是返回false。这种格式是进入数据库的。
$date = trim($_POST['date']);
在我的library.php中我有:
function validateDate($date) {
if(preg_match('/^[0-9]{2,4}[\-[[:space:]]]{1}[0-9]{1,2}[\-[[:space:]]]{1}[0-9]{1,2}$/',$date)){
return true;
}
else{
return false;
}
}
在我的php中我有:
if (validateDate($date)){
$dateCSS = 'style="border-color: #98faad;"';
}
else {
$dateCSS = 'style="border-color: red;"';
$flag = false;
}
答案 0 :(得分:1)
试试这个正则表达式:
^[0-9]{2,4}[\-[:space:]]{1}[0-9]{1,2}[\-[:space:]]{1}[0-9]{1,2}$
答案 1 :(得分:0)
验证日期的更可靠方法是使用datetime
extension。
function validateDate($date, $format = 'Y d m') {
return \DateTime::createFromFormat($format, $date) !== false;
}
这样您就不必使用正则表达式,并且您将能够正确地验证日期(例如,2014 12 51
之类的内容将无法验证)。
if ( ! validateDate('2014 12 51')) {
echo 'Not valid!';
}
如果有一天你需要这样做,它还可以让你验证更复杂的日期:
if (validateDate('16th September 2014', 'dS F Y')) {
echo 'Valid!';
}
对于$format
参数,您必须使用DateTime::createFromFormat()
接受的formatting options。