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;
}
Exemple #2
0
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;
}