Validar datas no PHP
Postado por: Pedro Rogério em
O PHP fornece muitas funcionalidades com a classe datetime. No entanto, essa classe não aborda validação, isto é, que formato essa data é recebida. A função strtotime() do PHP pode receber vários formatos de data legíveis aos seres humanos. O problema com strtotime() é que não existe uma maneira de atender a diferentes formatos de data, por exemplo, 05/12/2009. Dependendo de que país é o usuário, esta data pode ter vários significados, por exemplo, o mês dia e ano. Ao dividir a data em seus respectivos campos, cada segmento pode ser verificado com a função checkdate do PHP. A função abaixo valida uma data através da divisão da data por ano, mês e dia, usando-os como argumento para checkdate:
< ?php
/**
*
* Validate a date
*
* @param string $date
* @param string format
* @return bool
*
*/
function validateDate( $date, $format='YYYY-MM-DD')
{
switch( $format )
{
case 'YYYY/MM/DD':
case 'YYYY-MM-DD':
list( $y, $m, $d ) = preg_split( '/[-\.\/ ]/', $date );
break;
case 'YYYY/DD/MM':
case 'YYYY-DD-MM':
list( $y, $d, $m ) = preg_split( '/[-\.\/ ]/', $date );
break;
case 'DD-MM-YYYY':
case 'DD/MM/YYYY':
list( $d, $m, $y ) = preg_split( '/[-\.\/ ]/', $date );
break;
case 'MM-DD-YYYY':
case 'MM/DD/YYYY':
list( $m, $d, $y ) = preg_split( '/[-\.\/ ]/', $date );
break;
case 'YYYYMMDD':
$y = substr( $date, 0, 4 );
$m = substr( $date, 4, 2 );
$d = substr( $date, 6, 2 );
break;
case 'YYYYDDMM':
$y = substr( $date, 0, 4 );
$d = substr( $date, 4, 2 );
$m = substr( $date, 6, 2 );
break;
default:
throw new Exception( "Formato de data inválido" );
}
return checkdate( $m, $d, $y );
}
?>
Exemplo de uso
< ?php
echo validateDate( '2007-04-21' ) ? 'correto'. "\n" : 'errado' . "\n";
echo validateDate( '2007-21-04', 'YYYY-DD-MM' ) ? 'correto'. "\n" : 'errado' . "\n";
echo validateDate( '2007-21-04', 'YYYY/DD/MM' ) ? 'correto'. "\n" : 'errado' . "\n";
echo validateDate( '21/4/2007', 'DD/MM/YYYY' ) ? 'correto'. "\n" : 'errado' . "\n";
echo validateDate( '4/21/2007', 'MM/DD/YYYY' ) ? 'correto'. "\n" : 'errado' . "\n";
echo validateDate( '20070421', 'YYYYMMDD' ) ? 'correto'. "\n" : 'errado' . "\n";
echo validateDate( '04212007', 'YYYYDDMM' ) ? 'correto'. "\n" : 'errado' . "\n";
?>
Post original: Validate Date Using PHP













Boa tradução Pedro!
Nossa dificilmente acho funções SUPERUTEIS, uteis eu acho varias, mas SUPER é bem dificil, esta merece um “10″.
PARABENS ;)
Olá, eu também fiz uma postagem sobre validação de email, só que usei um método muito funcional, que verifica se realmente o host existe.
http://www.gasparimsat.com/index.php/21/08/2009/validacao-do-email-pelo-host-usando-php/
Ex: A pessoa escreve email@bol.com.br, ele verifica se o host “Bol” existe.