aqui esta la segunda parte de v_fecha.php
Código PHP:
function valida_anio( $anio, $garabato, $color )
{
/*-----------Quitamos los espacios que existan al principio, dentro y/o al final de cada uno-----------*/
/*-------de los parámetros, lo cual ya hicimos en la función valida_fecha y lo repetimos por si--------*/
/*----------------------------sólo estamos ocupando la función valida_anio-----------------------------*/
$anio = suprime_caracteres( $anio, ' ' );
$color = suprime_caracteres( $color, ' ' );
$garabato = suprime_caracteres( $garabato, ' ' );
if( is_int( $anio ) ) // Si el año es de tipo entero... lo convertimos a string
$anio = (string)$anio;
$a_num = extraer_letras_y_o_numeros( $anio, 'numeros' ); // Nos aseguramos que año contenga sólo números
$a[0] = 1; // Marcamos que se encontró un error hasta demostrar lo contrario
if( $a_num < '10000' && $a_num != '' ) // Si el año es válido
{
$a[0] = 0; // Indicamos que no se encontro ningún eror
switch( strlen( $a_num ) )
{
case '1': // Si se envío sólo un dígito se considerará como años dos mil
$a[1] = "200".$a_num;
break;
case '2':
if( $a_num > 69 ) // Cuando es mayor a 69 se considerará como milnovecientos y algo
$a[1] = "19".$a_num;
else // Cuando es menor ó igual a 69 se considerará como años dos mil
$a[1] = "20".$a_num;
break;
case '3':
if( substr ( $a_num, 0, 1 ) == 0 ) // Si el 1er digito = 0 se considera como años dos mil
$a[1] = "2".$a_num;
else // si el 1er. dígito es diferente de 0 se considerará como años mil y algo
$a[1] = "1".$a_num;
break;
default:
if( $a_num != '0000' )
$a[1] = $a_num;
else // Error: No existe el año 0
{
$a[0] = 1;
$a[1] = colorea_cadena( $a_num, $color );
}
}
}
elseif( $a_num >= '10000' && $a_num != '' ) // Error: El año está fuera del rango permitido
$a[1] = colorea_cadena( $anio, $color );
elseif( $a_num == '' ) // ERROR: No se encontraron números
{
if( $anio == '' )
$a[1] = colorea_cadena( $garabato.$garabato.$garabato.$garabato, $color );
elseif( strlen( $anio ) == 1 )
$a[1] = colorea_cadena( $garabato.$garabato.$garabato.$anio, $color );
elseif( strlen( $anio ) == 2 )
$a[1] = colorea_cadena( $garabato.$garabato.$anio, $color );
elseif( strlen( $anio ) == 3 )
$a[1] = colorea_cadena( $garabato.$anio, $color );
elseif( strlen( $anio ) >= 4)
$a[1] = colorea_cadena( $anio, $color );
}
return $a;
}
function valida_fecha( $fecha, $garabato, $tipo = 1, $color = '#FF0000' )
{
// Quitamos los espacios que existan al principio, dentro y/o al final de cada uno de los parámetros
$fecha = suprime_caracteres( $fecha, ' ' );
$garabato = suprime_caracteres( $garabato, ' ' );
$tipo = suprime_caracteres( $tipo, ' ' );
$color = suprime_caracteres( $color, ' ' );
if( empty( $garabato ) && $garabato <> '0' ) // Si no se envío ningún garabato, asignamos uno por default
$garabato = '?';
else
{
if( strlen( $garabato ) > 1 ) // Nos aseguramos de que $garabato conste de ún sólo caracter
$garabato = substr( $garabato, 0, 1 );
}
if( !ereg( '^[1-3]{1}$', $tipo ) ) // ERROR: La variable $tipo no esta dentro del rango permitido.
{
// Esta variable nos servir para abrir una ventana de alerta
$mensaje = "
<script languaje=\"javascript\">
function alerta()
{
msj = 'Amigo(a) programador(a), tuviste un error.\\n\\nEl valor que pusiste al parámetro ';
msj += '\$tipo en la función\\r de validación es: $tipo, este valor no es válido, ';
msj += 'por favor\\r corrigelo para poder realizar la validación.';
alert( msj );
}
alerta();
</script>
";
$validada[] = 1;
$validada[] = $fecha.$mensaje;
return $validada; // Mostramos el ERROR al programador
}
/*------------Reemplazamos el separador '/' por uno más estandar (digo "estandar" porque es------------*/
/*-------------------el separador que se pone en MySQL para los campos tipo DATE '-'-------------------*/
$fecha = str_replace( '/', '-', $fecha );
/*-----------La siguientes 2 variables nos servirán para indicar los dígitos que deverán de------------*/
/*--------------contener cada una de las partes (día, mes y año) marcadas con otro color---------------*/
$d_m = colorea_cadena( $garabato.$garabato, $color );
$a = colorea_cadena( $garabato.$garabato.$garabato.$garabato, $color );
/*-------Si la fecha NO contiene guiones medios evaluamos si es de tipo 3 (Marca de tiempo UNIX)-------*/
/*---------------------------------de lo contrario mostramos el error----------------------------------*/
if( !strstr ( $fecha, "-" ) )
{
if( empty( $fecha ) && $fecha <> '0' ) // ERROR: Fecha vacía
{
if( $tipo == 1 ) // Si la fecha debe comenzar por día
$fecha = $d_m."-".$d_m."-".$a;
elseif( $tipo == 2 ) // Si la fecha debe comenzar por año
$fecha = $a."-".$d_m."-".$d_m;
elseif( $tipo == 3 ) // Si la fecha debe ser una marca de tiempo UNIX mínimo son 5 dígitos
$fecha = colorea_cadena( $garabato.$garabato.$garabato.$garabato.$garabato, $color );
$validada[] = 1;
$validada[] = $fecha;
return $validada;
}
else
{
if( $tipo == 3 ) // Si la fecha que se mando es una marca de tiempo UNIX
{
$fecha = extraer_letras_y_o_numeros( $fecha, 'numeros' ); // Extraemos sólo los números
// Las marcas de tiempo Unix comienzan desde el 01/01/1970 (5 dígitos)
// hasta el 18/01/2038 (10 digitos) segun la funcion mktime()
if( strlen( $fecha ) >= 5 && strlen( $fecha ) <= 10 )
{
$fecha = date( 'Y-m-d', $fecha );
if( $fecha ) // Si la fecha es correcta
{
$validada[] = 0;
$validada[] = $fecha;
return $validada;
}
else
{
$validada[] = 1;
$validada[] = colorea_cadena( $fecha, $color );
return $validada;
}
}
else // ERROR: La marca de tiempo UNIX no está dentro del rango permitido
{
if( strlen( $fecha ) == 0 )
$fecha = colorea_cadena( $garabato.$garabato.$garabato.$garabato.$garabato, $color );
if( strlen( $fecha ) == 1 )
$fecha = colorea_cadena( $garabato.$garabato.$garabato.$garabato.$fecha, $color );
elseif( strlen( $fecha ) == 2 )
$fecha = colorea_cadena( $garabato.$garabato.$garabato.$fecha, $color );
elseif( strlen( $fecha ) == 3 )
$fecha = colorea_cadena( $garabato.$garabato.$fecha, $color );
elseif( strlen( $fecha ) == 4 )
$fecha = colorea_cadena( $garabato.$fecha, $color );
elseif( strlen( $fecha ) > 10 )
$fecha = colorea_cadena( $fecha, $color );
$validada[] = 1;
$validada[] = $fecha;
return $validada;
}
}
elseif( $tipo == 1 ) // Si la fecha debe comenzar por día
{
$d = valida_dia( $fecha, $garabato, $color );
$fecha = $d[1]."-".$d_m."-".$a;
}
elseif( $tipo == 2 ) // Si la fecha debe comenzar por año ($tipo = 2)
{
$a = valida_anio( $fecha, $garabato, $color );
$fecha = $a[1]."-".$d_m."-".$d_m;
}
$validada[] = 1;
$validada[] = $fecha;
return $validada;
}
}
/*/////////////////////////////////////////////|\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/