function ew_CheckDateEx($value, $format, $sep) { if (strval($value) == "") { return TRUE; } while (strpos($value, " ") !== FALSE) { $value = str_replace(" ", " ", $value); } $value = trim($value); $arDT = explode(" ", $value); if (count($arDT) > 0) { if (preg_match('/^([0-9]{4})-([0][1-9]|[1][0-2])-([0][1-9]|[1|2][0-9]|[3][0|1])$/', $arDT[0], $matches)) { // accept yyyy-mm-dd $sYear = $matches[1]; $sMonth = $matches[2]; $sDay = $matches[3]; } else { $wrksep = "\\{$sep}"; switch ($format) { case "std": $pattern = '/^([0-9]{4})' . $wrksep . '([0]?[1-9]|[1][0-2])' . $wrksep . '([0]?[1-9]|[1|2][0-9]|[3][0|1])$/'; break; case "stdshort": $pattern = '/^([0-9]{2})' . $wrksep . '([0]?[1-9]|[1][0-2])' . $wrksep . '([0]?[1-9]|[1|2][0-9]|[3][0|1])$/'; break; case "us": $pattern = '/^([0]?[1-9]|[1][0-2])' . $wrksep . '([0]?[1-9]|[1|2][0-9]|[3][0|1])' . $wrksep . '([0-9]{4})$/'; break; case "usshort": $pattern = '/^([0]?[1-9]|[1][0-2])' . $wrksep . '([0]?[1-9]|[1|2][0-9]|[3][0|1])' . $wrksep . '([0-9]{2})$/'; break; case "euro": $pattern = '/^([0]?[1-9]|[1|2][0-9]|[3][0|1])' . $wrksep . '([0]?[1-9]|[1][0-2])' . $wrksep . '([0-9]{4})$/'; break; case "euroshort": $pattern = '/^([0]?[1-9]|[1|2][0-9]|[3][0|1])' . $wrksep . '([0]?[1-9]|[1][0-2])' . $wrksep . '([0-9]{2})$/'; break; } if (!preg_match($pattern, $arDT[0])) { return FALSE; } $arD = explode($sep, $arDT[0]); // change EW_DATE_SEPARATOR to $sep //*** switch ($format) { case "std": case "stdshort": $sYear = ew_UnformatYear($arD[0]); $sMonth = $arD[1]; $sDay = $arD[2]; break; case "us": case "usshort": $sYear = ew_UnformatYear($arD[2]); $sMonth = $arD[0]; $sDay = $arD[1]; break; case "euro": case "euroshort": $sYear = ew_UnformatYear($arD[2]); $sMonth = $arD[1]; $sDay = $arD[0]; break; } } if (!ew_CheckDay($sYear, $sMonth, $sDay)) { return FALSE; } } if (count($arDT) > 1 && !ew_CheckTime($arDT[1])) { return FALSE; } return TRUE; }
function ew_CheckDateEx($value, $format, $sep) { if (strval($value) == "") { return TRUE; } while (strpos($value, " ") !== FALSE) { $value = str_replace(" ", " ", $value); } $value = trim($value); $arDT = explode(" ", $value); if (count($arDT) > 0) { $sep = "\\{$sep}"; switch ($format) { case "std": $pattern = '/^([0-9]{4})' . $sep . '([0]?[1-9]|[1][0-2])' . $sep . '([0]?[1-9]|[1|2][0-9]|[3][0|1])$/'; break; case "us": $pattern = '/^([0]?[1-9]|[1][0-2])' . $sep . '([0]?[1-9]|[1|2][0-9]|[3][0|1])' . $sep . '([0-9]{4})$/'; break; case "euro": $pattern = '/^([0]?[1-9]|[1|2][0-9]|[3][0|1])' . $sep . '([0]?[1-9]|[1][0-2])' . $sep . '([0-9]{4})$/'; break; } if (!preg_match($pattern, $arDT[0])) { return FALSE; } $arD = explode(EW_DATE_SEPARATOR, $arDT[0]); switch ($format) { case "std": $sYear = $arD[0]; $sMonth = $arD[1]; $sDay = $arD[2]; break; case "us": $sYear = $arD[2]; $sMonth = $arD[0]; $sDay = $arD[1]; break; case "euro": $sYear = $arD[2]; $sMonth = $arD[1]; $sDay = $arD[0]; break; } if (!ew_CheckDay($sYear, $sMonth, $sDay)) { return FALSE; } } if (count($arDT) > 1 && !ew_CheckTime($arDT[1])) { return FALSE; } return TRUE; }