function CCGetDateRegExp($FormatMask) { global $CCSLocales; $RegExp = false; if (is_array($FormatMask)) { $masks = array("d" => array("(\\d{1,2})", ccsDay), "dd" => array("(\\d{2})", ccsDay), "ddd" => array("(" . join("|", $CCSLocales->GetFormatInfo("WeekdayShortNames")) . ")", ccsWeek), "dddd" => array("(" . join("|", $CCSLocales->GetFormatInfo("WeekdayNames")) . ")", ccsWeek), "w" => array("\\d"), "ww" => array("\\d{1,2}"), "m" => array("(\\d{1,2})", ccsMonth), "mm" => array("(\\d{2})", ccsMonth), "mmm" => array("(" . join("|", $CCSLocales->GetFormatInfo("MonthShortNames")) . ")", ccsShortMonth), "mmmm" => array("(" . join("|", $CCSLocales->GetFormatInfo("MonthNames")) . ")", ccsFullMonth), "y" => array("\\d{1,3}"), "yy" => array("(\\d{2})", ccsYear), "yyyy" => array("(\\d{4})", ccsYear), "q" => array("\\d"), "h" => array("(\\d{1,2})", ccsHour), "hh" => array("(\\d{2})", ccsHour), "H" => array("(\\d{1,2})", ccsHour), "HH" => array("(\\d{2})", ccsHour), "n" => array("(\\d{1,2})", ccsMinute), "nn" => array("(\\d{2})", ccsMinute), "s" => array("(\\d{1,2})", ccsSecond), "ss" => array("(\\d{2})", ccsSecond), "AM/PM" => array("(AM|PM)", ccsAmPm), "am/pm" => array("(am|pm)", ccsAmPm), "A/P" => array("(A|P)", ccsAmPm), "a/p" => array("(a|p)", ccsAmPm), "a/p" => array("(a|p)", ccsAmPm), "tt" => array("(" . $CCSLocales->GetFormatInfo("AMDesignator") . "|" . $CCSLocales->GetFormatInfo("PMDesignator") . ")", ccsAmPm), "GMT" => array("([\\+\\-]\\d{1,2})", ccsGMT), "S" => array("(\\d{1,6})", ccsMilliSecond)); $RegExp[0] = ""; $RegExpIndex = 1; $is_date = false; $is_datetime = false; for ($i = 0; $i < sizeof($FormatMask); $i++) { if ($FormatMask[$i] == "GeneralDate") { $reg = CCGetDateRegExp($CCSLocales->GetFormatInfo("GeneralDate")); $RegExp[0] .= substr($reg[0], 2, strlen($reg[0]) - 5); $is_datetime = true; for ($j = 1; $j < sizeof($reg); $j++) { $RegExp[$RegExpIndex++] = $reg[$j]; } } else { if ($FormatMask[$i] == "LongDate" || $FormatMask[$i] == "ShortDate") { $reg = CCGetDateRegExp($CCSLocales->GetFormatInfo($FormatMask[$i])); $RegExp[0] .= substr($reg[0], 2, strlen($reg[0]) - 5); $is_date = true; for ($j = 1; $j < sizeof($reg); $j++) { $RegExp[$RegExpIndex++] = $reg[$j]; } } else { if ($FormatMask[$i] == "LongTime" || $FormatMask[$i] == "ShortTime") { $reg = CCGetDateRegExp($CCSLocales->GetFormatInfo($FormatMask[$i])); $RegExp[0] .= substr($reg[0], 2, strlen($reg[0]) - 5); for ($j = 1; $j < sizeof($reg); $j++) { $RegExp[$RegExpIndex++] = $reg[$j]; } } else { if (isset($masks[$FormatMask[$i]])) { $MaskArray = $masks[$FormatMask[$i]]; if ($i == 0 && ($MaskArray[1] == ccsYear || $MaskArray[1] == ccsMonth || $MaskArray[1] == ccsFullMonth || $MaskArray[1] == ccsWeek || $MaskArray[1] == ccsDay)) { $is_date = true; } else { if ($is_date && !$is_datetime && $MaskArray[1] == ccsHour) { $is_datetime = true; } } $RegExp[0] .= $MaskArray[0]; if ($is_datetime) { $RegExp[0] .= "?"; } for ($j = 1; $j < sizeof($MaskArray); $j++) { $RegExp[$RegExpIndex++] = $MaskArray[$j]; } } else { if ($is_date && !$is_datetime && $i < sizeof($FormatMask) && $masks[$FormatMask[$i + 1]][1] == ccsHour) { $is_datetime = true; } $RegExp[0] .= CCAddEscape($FormatMask[$i]); if ($is_datetime) { $RegExp[0] .= "?"; } } } } } } $RegExp[0] = str_replace(" ", "\\s*", $RegExp[0]); $RegExp[0] = "/^" . $RegExp[0] . "\$/i"; } return $RegExp; }
function CCGetDateRegExp($FormatMask) { global $ShortWeekdays; global $Weekdays; global $ShortMonths; global $Months; $RegExp = false; if (is_array($FormatMask)) { $masks = array("GeneralDate" => array("(\\d{1,2})\\/(\\d{1,2})\\/(\\d{2}), (\\d{2}):(\\d{2}):(\\d{2}) (AM|PM)", ccsMonth, ccsDay, ccsYear, ccsHour, ccsMinute, ccsSecond, ccsAmPm), "LongDate" => array("(" . join("|", $Weekdays) . "), (" . join("|", $Months) . ") (\\d{1,2}), (\\d{4})", ccsWeek, ccsFullMonth, ccsDay, ccsYear), "ShortDate" => array("(\\d{1,2})\\/(\\d{1,2})\\/(\\d{2})", ccsMonth, ccsDay, ccsYear), "LongTime" => array("(\\d{1,2}):(\\d{2}):(\\d{2}) (AM|PM)", ccsHour, ccsMinute, ccsSecond, ccsAmPm), "ShortTime" => array("(\\d{2}):(\\d{2})", ccsHour, ccsMinute), "d" => array("(\\d{1,2})", ccsDay), "dd" => array("(\\d{2})", ccsDay), "ddd" => array("(" . join("|", $ShortWeekdays) . ")", ccsWeek), "dddd" => array("(" . join("|", $Weekdays) . ")", ccsWeek), "w" => array("\\d"), "ww" => array("\\d{1,2}"), "m" => array("(\\d{1,2})", ccsMonth), "mm" => array("(\\d{2})", ccsMonth), "mmm" => array("(" . join("|", $ShortMonths) . ")", ccsShortMonth), "mmmm" => array("(" . join("|", $Months) . ")", ccsFullMonth), "y" => array("\\d{1,3}"), "yy" => array("(\\d{2})", ccsYear), "yyyy" => array("(\\d{4})", ccsYear), "q" => array("\\d"), "h" => array("(\\d{1,2})", ccsHour), "hh" => array("(\\d{2})", ccsHour), "H" => array("(\\d{1,2})", ccsHour), "HH" => array("(\\d{2})", ccsHour), "n" => array("(\\d{1,2})", ccsMinute), "nn" => array("(\\d{2})", ccsMinute), "s" => array("(\\d{1,2})", ccsSecond), "ss" => array("(\\d{2})", ccsSecond), "AM/PM" => array("(AM|PM)", ccsAmPm), "am/pm" => array("(am|pm)", ccsAmPm), "A/P" => array("(A|P)", ccsAmPm), "a/p" => array("(a|p)", ccsAmPm), "GMT" => array("([\\+\\-]\\d{2})", ccsGMT)); $RegExp[0] = ""; $RegExpIndex = 1; for ($i = 0; $i < sizeof($FormatMask); $i++) { if (isset($masks[$FormatMask[$i]])) { $MaskArray = $masks[$FormatMask[$i]]; $RegExp[0] .= $MaskArray[0]; for ($j = 1; $j < sizeof($MaskArray); $j++) { $RegExp[$RegExpIndex++] = $MaskArray[$j]; } } else { $RegExp[0] .= CCAddEscape($FormatMask[$i]); } } $RegExp[0] = "/^" . $RegExp[0] . "\$/"; } return $RegExp; }