falto esta función porque ta muy larga
v_fecha.php
Código PHP:
<?php
/***********************************************************************************************************
Autor: Erik Francisco Torres Zavala
Fecha de Creación: 01-03-07
Fecha de última Modificación: 27-03-09
Descripción del Archivo: Este archivo contiene funciones para evaluar cada una de las partes de una fecha
(día, mes y año) y devuelve un array en el cual el primer valor '[0]' nos indicará
con un valor booleano si se encontro un error '1' o no '0' y el segundo valor '[1]'
contendrá la fecha con el siguiente formato: aaaa-mm-dd para poder guardarla en
una base de datos si es que no se encontró ningún error, de lo contrario, el
resultado de la evaluación tendrá como valor la misma fecha enviada pero marcando
con un color y en negritas los errores que se encontraron.
Descripción de Variables: $fecha OBLIGATORIO Es la fecha que deseamos validar y dar formato
$garabato OPCIONAL Es el símbolo que deseamos colocar para marcar los dígitos
que hacen falta... por default es '?'
$tipo OPCIONAL Es un número que indica la forma en como le envíamos la
fecha a la función... por default es '1' y a continuación
se muestra el formato válido para cada uno de los 3 tipos:
Formato válido para el tipo '1': (dd/mm/aaaa) ejemplo: 4-ene-5
Formato válido para el tipo '2': (aaaa/mm/dd) ejemplo: 5-1-5
Formato válido para el tipo '3': Marca de tiempo UNIX ejem.: 1104904620
como se puede observar el separador puede ser '/' ó '-',
los números pueden ser de una sóla cifra y el mes se puede
enviar en español ó en ingles de nombre completo o sólo
los 3 prímeros caracteres
$color OPCIONAL Es el color que deseamos pintar cada una de las partes de
la fecha en caso de que se hallan encontrado errores, deve
ser en formato hexadecial... por default es rojo '#FF0000'
***********************************************************************************************************/
include_once 'funciones_de_cadena.php'; // Incluimos las funciones complementarias
function valida_dia( $dia, $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_dia-----------------------------*/
$dia = suprime_caracteres( $dia, ' ' );
$garabato = suprime_caracteres( $garabato, ' ' );
$color = suprime_caracteres( $color, ' ' );
if( is_int( $dia ) ) // Si el día es de tipo entero... lo convertimos a string
$dia = (string)$dia;
$d_num = extraer_letras_y_o_numeros( $dia, 'numeros' ); // Nos aseguramos que el día sólo tenga números
$d[0] = 1; // Marcamos que se encontró un error hasta demostrar lo contrario
if( $d_num != '0' && $d_num != '' )
{
if( $d_num < '32' ) // El día es válido
{
if( strlen( $d_num ) == 1 ) // Si el día es de un sólo caracter
$d[1] = '0'.$d_num; // concatenamos un cero a la izquierda
else
$d[1] = $d_num;
$d[0] = 0; // Indicamos que no se encontró ningún error
}
else // ERROR: Sólo existe un máximo de 31 días por mes
{
if( strlen( $d_num ) == 1 )
$d[1] = colorea_cadena( $garabato.$d_num, $color );
else
$d[1] = colorea_cadena( $d_num, $color );
}
}
elseif( $d_num == '0' ) // ERROR: No existe ningún día cero '0'
{
if( strlen( $dia ) == 1 )
$d[1] = colorea_cadena( $garabato.$dia, $color );
else
$d[1] = colorea_cadena( $dia, $color );
}
elseif( $d_num == '' ) // ERROR: Día vacío
{
if( $dia == '' )
$d[1] = colorea_cadena( $garabato.$garabato, $color );
elseif( strlen( $dia ) == 1 )
$d[1] = colorea_cadena( $garabato.$dia, $color );
elseif( strlen( $dia ) >= 2 )
$d[1] = colorea_cadena( $dia, $color );
}
return $d;
}
function valida_mes( $mes, $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_mes-----------------------------*/
$mes = suprime_caracteres( $mes, ' ' );
$garabato = suprime_caracteres( $garabato, ' ' );
$color = suprime_caracteres( $color, ' ' );
if( is_int( $mes ) ) // Si el mes es de tipo entero... lo convertimos a string
$mes = (string)$mes;
$m[0] = 1; // Marcamos que se encontró un error hasta demostrar lo contrario
if( !empty( $mes ) && $mes != '0' ) // Si se ingresaron datos
{
$m_int = extraer_letras_y_o_numeros( $mes, 'numeros' ); // Extraemos sólo números
if( $m_int != 0 && $m_int != '' ) // Si el día es un número
{
$mes = $m_int;
if( $mes <= 12 )
{
if( strlen( $mes ) == 1 ) // Si el mes es de 1 caracter le concatenamos un 0 a la izquierda
$mes = "0".$mes;
$m[0] = 0; // Indicamos que no se encontró ningún error
$m[1] = $mes;
}
else // ERROR: El mes enviado esta fuera del rango permitido
$m[1] = colorea_cadena( $mes, $color );
}
else // Si el día no es un número evaluaremos al mes como texto
{
$mes = strtoupper( $mes ); // Comvertimos el valor del mes enviado a Mayúsculas
$mes = extraer_letras_y_o_numeros( $mes, 'letras' ); // Extraemos sólo letras
// Creamos arreglos para los meses válidos incluidos los nombres en ingles
$m_esp = array( 'ENERO', 'FEBRERO', 'MARZO', 'ABRIL', 'MAYO', 'JUNIO',
'JULIO', 'AGOSTO', 'SEPTIEMBRE', 'OCTUBRE', 'NOVIEMBRE', 'DICIEMBRE' );
$m_ing = array( 'JANUARY', 'FEBRUARY', 'MARCH', 'APRIL', 'MAY', 'JUNE',
'JULY', 'AUGUST', 'SEPTEMBER', 'OCTOBER', 'NOVEMBER', 'DECEMBER' );
// Comparamos los valores del array con el valor del mes enviado para saber el número de mes
for( $e = 0; $e < count( $m_esp ); $e++ )
{
$m3s = substr( $m_esp[$e], 0, 3 ); // Extraemos las 3 primeras letras del mes en español
$m3e = substr( $m_ing[$e], 0, 3 ); // Extraemos las 3 primeras letras del mes en ingles
if( $m_esp[$e] == $mes || $m3s == $mes || $m_ing[$e] == $mes || $m3e == $mes ) // Si es válido
{
$mes = $e + 1; // Sumamos una unidad al mes porque los array comienzan desde la posición 0
if( $mes < 10 ) // Si el tamaño del mes es de 1 dígito concatenamos un 0 a la izquierda
$mes = "0".$mes;
$m[0] = 0; // Indicamos que no se encontró ningún error
$m[1] = $mes;
break; // Dejamos de comparar porque si llegamos hasta aqui significa que el mes si es válido
}
}
if( $m[0] == 1 ) // Si el mes enviado no es igual a alguno de los meses válidos lo marcamos
{
if( strlen( $mes ) == 0 )
$m[1] = colorea_cadena( $garabato.$garabato, $color );
elseif( strlen( $mes ) == 1 )
$m[1] = colorea_cadena( $garabato.$mes, $color );
elseif( strlen( $mes ) >= 2 )
$m[1] = colorea_cadena( $mes, $color );
}
}
}
elseif( $mes == '0' ) // ERROR: No existe ningún mes 0
{
if( strlen( $mes ) == 1 )
$m[1] = colorea_cadena( $garabato.$mes, $color );
elseif( strlen( $mes ) >= 2 )
$m[1] = colorea_cadena( $mes, $color );
}
elseif( empty( $mes ) && $mes <> '0' ) // ERROR: Campo vacio
$m[1] = colorea_cadena( $garabato.$garabato, $color );
return $m;
}