Ir para conteúdo

POWERED BY:

Arquivado

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

Fabyo

Valida CNPJ

Recommended Posts

Funçao que valida um CNPJ

 

Como funciona os numeros do CNPJ (Cadastrastro Nacional da Pessoa Jurídica)

 

O numeros do CNPJ é composto por três partes de algarismos

a primeira parte eh o número da inscrição

a segunda parte depois da barra( / ) eh o número de filiais

e o final sao os 2 digitos verificadores

 

Como calcular um numero de cnpj para saber se ele eh valido

exemplo 11.222.333/0001-XX.

 

colocando eles na sequencia sem a barra, ponto e traço

 

112223330001

 

agora o algorito para fazer a soma

 

543298765432

 

colocando um em baixo do outro so multiplicar o de cima pelo de baixo

 

112223330001 = > cnpj

543298765432 => algoritimos

 

exemplo 5 * 1 , 4 * 1, 3 * 2, 2 * 2 etc...

 

depois some tudo exemplo 5 + 4 + 6 + 4 + 18 + 24 + 21 + 18 + 0 + 0 + 0 + 2

 

resultado dessa primeira soma = 102

 

fazendo a divisão por 11 (102/11).

 

o resto da divisão é o número 3.

 

regra se o resultado for menor que 2 o valor do dígito verificador eh 0

senao subtraímos o valor de 11 para obter o dígito

exemplo verificador é (11 - 3) o primeiro digito eh 8.

 

so fazer todo processo de novo mas agora incluindo o digito que foi achado na conta acima exemplo

 

1122233300018 = cnpj + 1 digito achado que eh o 8

6543298765432 => algoritimos acrescentando o 6 no começo

 

so fazer a soma e achar o segundo digito verificador e pra saber se o cnpj eh valido so testar se os numeros verificadores sao iguais oa do cnpj

agora vamos ao script eu montei uma logica bem simples e enxuta, mas como to fazendo isso as 5 da madruga nao to com paciencia pra mecher mais nele mas da pra diminuir mais linhas ainda :D , e quem tiver duvidas so perguntar

 

PHP

  1. /* Fabyo Guimaraes 31/07/2005 5:21:00 am*/

  2. function Valida_CNPJ( $cnpj ) 
  3. {
  4. $cnpj = preg_replace( "@[./-]@", "", $cnpj );
  5. if( strlen( $cnpj )  14 or !is_numeric( $cnpj ) )
  6. {
  7. return false;
  8. }
  9. $k = 6;
  10. $soma1 = "";
  11. $soma2 = "";
  12. for( $i = 0; $i 
  13. {
  14. $k = $k == 1 ? 9 : $k;
  15. $soma2 += ( $cnpj{$i} * $k );
  16. $k--;
  17. if($i 
  18. {
  19. if($k == 1)
  20. {
  21. $k = 9;
  22. $soma1 += ( $cnpj{$i} * $k );
  23. $k = 1;
  24. }
  25. else
  26. {
  27. $soma1 += ( $cnpj{$i} * $k );
  28. }
  29. }
  30. }

  31. $digito1 = $soma1 % 11 
  32. $digito2 = $soma2 % 11 

  33. return ( $cnpj{12} == $digito1 and $cnpj{13} == $digito2 );
  34. }

  35. echo Valida_CNPJ( "11.222.333/0001-81" );
  36. //retorna true em caso de valido e false se for invalido
  37. ?>

 

bom aproveito

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.