Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Douglas_R

[Resolvido] Espressão Regular

Recommended Posts

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.