Enviado para você por Penha através do Google Reader:
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
Isso pode lhe interessar:
- Outros lugares onde pode usar o "or" no PHP
- Padronizações ISO em colunas do banco de dados
- SQL com todas cidades e estados do Brasil
- Trabalhando com URLs amigáveis sem o mod_rewrite
- 7+ Frameworks PHP brasileiros
Já conhece o meu outro blog? O endereço é o: CSS no Lanche
Você ainda não está me seguindo no Twitter, o que está esperando para fazer isso?
Coisas que você pode fazer a partir daqui:
- Inscrever-se no Pinceladas da Web - XHTML, CSS, JavaScript e WebStandards usando o Google Reader
- Comece a usar o Google Reader para manter-se facilmente atualizado com todos os seus sites favoritos
0 comentários:
Postar um comentário