Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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;
}