$token) { switch ($token) { case 'Y': $year = (int)$matches[$i + 1]; break; case 'm': $month = (int)$matches[$i + 1]; break; case 'd': $day = (int)$matches[$i + 1]; break; } } if (checkdate($month, $day, $year)) { return sprintf('%04d-%02d-%02d', $year, $month, $day); } } return $default; } function gpc_get_datetime(&$GPC, $varname, $default = NULL) { // TODO improve if (!isset($GPC[$varname]) || $GPC[$varname] == '') { return $default; } return $GPC[$varname]; } function gpc_get_color(&$GPC, $varname, $default = NULL) { if (!isset($GPC[$varname]) or (strlen(trim($GPC[$varname])) == 0)) { return $default; } $color = $GPC[$varname]; if ((strlen($color) == 7) and (substr($color, 0, 1) == '#')) { $color = substr($color, 1); } if ((strlen($color) != 6) or (! ctype_xdigit($color))) { return $default; } return strtoupper($color); } function gpc_get_enum(&$GPC, $varname, $values, $default = NULL) { if (!isset($GPC[$varname]) or (strlen(trim($GPC[$varname])) == 0)) { return $default; } if (! in_array($GPC[$varname], $values)) { return $default; } return $GPC[$varname]; } function gpc_get_set(&$GPC, $varname, $allowed, $as_string = false, $default = []) { if (!isset($GPC[$varname])) { return $default; } $selected = array_intersect($allowed, array_keys($GPC[$varname])); if ($as_string) { return implode(',', $selected); } else { return array_values($selected); } }