Douglas_R 0 Denunciar post Postado Julho 12, 2010 Preciso fazer uma expressão regular para placa de carro Ex:QWE-2021 E verificar o ultimo número... se for 1 ele exibe a data com o ultimo dia do mês 4 e se já passou da data ele ja exibe com o próximo ano... Pelo que estudei de expressão regular ficou assim: $placaveic = 'QWE-2021'; $hoje = date("d/m/Y"); $data = explode('/', $hoje); $ano = $data[2]; $ano1 = $data[2]+1; if(eregi("[A-Z]{3}-[0-9]{3}[1]{1}$", $placaveic)) { if($ano <= $hoje) { $datavalidade = '30/04/'.$ano1; } else { $datavalidade = '30/04/'.$ano; } } Compartilhar este post Link para o post Compartilhar em outros sites
borsatti 2 Denunciar post Postado Julho 12, 2010 cara, eu acho desnecessario você usar uma ER para isso. você pode fazer assim! $placaveic = 'QWE-2021'; $hoje = date("d/m/Y"); $data = explode('/', $hoje); $ano = $data[2]; $ano1 = $data[2]+1; $lastNumber = substr($placaveic,0,-1); if($lastNumber == "1") { if($ano <= $hoje) { $datavalidade = '30/04/'.$ano1; } else { $datavalidade = '30/04/'.$ano; } } espero ter ajudado! Compartilhar este post Link para o post Compartilhar em outros sites
viniciuscainelli 0 Denunciar post Postado Julho 12, 2010 Olá Douglas_R, Espero que te ajude: <?php $placaVeiculo = 'QWE-2023'; $placaFinal = (int)substr($placaVeiculo, -1); $placasCarros = array( 1 => 4, 2 => 5, 3 => 6, 4 => 7, 5 => 8, 6 => 8, 7 => 9, 8 => 10, 9 => 11, 0 => 12, ); $dataVencimento = mktime(0, 0, 1, $placasCarros[$placaFinal], date('j')); if($placasCarros[$placaFinal] < date("n")) { $dataVencimento = mktime(0, 0, 1, $placasCarros[$placaFinal], date('j'), date('Y') + 1); } echo date("m/Y", $dataVencimento); ?> This is it! Vinicius Cainelli Compartilhar este post Link para o post Compartilhar em outros sites
Douglas_R 0 Denunciar post Postado Julho 12, 2010 borsati... usando o que você disse consegui fazer isso: $placaveic = 'QWE-2022'; $hoje = date("d/m/Y"); $data = explode('/', $hoje); $ano = $data[2]; $ano1 = $data[2]+1; $lastNumber = substr($placaveic, 7); if($lastNumber == "1") { $datavalidade = '30/04/'.$ano; $datavalidade1 = explode('/', $datavalidade); if($hoje <= $datavalidade) { $datavalidade = '30/04/'.$ano1; } else { $datavalidade = '30/04/'.$ano; } } echo $datavalidade; Porem estou com problema na hora de comprar as datas, para ver se $hoje é menor ou igual a $datavalidade E Vinicius, me ajudou sim o que você me mandou, só que eu precisava retornar a data completa, se for dia 30 ou 31 o mês ele exibe o dia... Vou mexer um pouco nele pra ver se consigo adaptar do jeito que eu preciso... Compartilhar este post Link para o post Compartilhar em outros sites
viniciuscainelli 0 Denunciar post Postado Julho 12, 2010 E Vinicius, me ajudou sim o que você me mandou, só que eu precisava retornar a data completa, se for dia 30 ou 31 o mês ele exibe o dia... Vou mexer um pouco nele pra ver se consigo adaptar do jeito que eu preciso... Segue do jeito que pediu: <?php $placaVeiculo = 'QWE-2023'; $placaFinal = (int)substr($placaVeiculo, -1); $placasCarros = array( 1 => 4, 2 => 5, 3 => 6, 4 => 7, 5 => 8, 6 => 8, 7 => 9, 8 => 10, 9 => 11, 0 => 12, ); $anoVencimento = date('Y'); $mesVencimento = $placasCarros[$placaFinal]; if($mesVencimento < date("n")) { $anoVencimento = date('Y') + 1; } $dataVencimento = mktime(0, 0, 1, $mesVencimento, getMaiorDiaMes($mesVencimento, $anoVencimento), $anoVencimento); echo date("d/m/Y", $dataVencimento); function getMaiorDiaMes($mes, $ano) { for($i = 31; $i >= 28; $i--) { if(checkdate($mes, $i, $ano)) { return $i; } } } ?> Espero que ajude. This is it! Vinicius Cainelli Compartilhar este post Link para o post Compartilhar em outros sites
Douglas_R 0 Denunciar post Postado Julho 12, 2010 Perfeito Vinicius... exatamente isso... sem tirar nem por... Obrigado ai pela ajuda... Compartilhar este post Link para o post Compartilhar em outros sites