Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
-
-
-
/ Fabyo Guimaraes 31/07/2005 5:21:00 am/
-
-
function Valida_CNPJ( $cnpj )
- $k = 6;
- $soma1 = "";
- $soma2 = "";
- $k = $k == 1 ? 9 : $k;
- $soma2 += ( $cnpj{$i} * $k );
- $k--;
- $k = 9;
- $soma1 += ( $cnpj{$i} * $k );
- $k = 1;
-
-
-
-
echo Valida_CNPJ( "11.222.333/0001-81" );
-
//retorna true em caso de valido e false se for invalido
-
?>
bom aproveito
tenta assim: return ( $cnpj{12} == $digito1 and $cnpj{13} == $digito2 ) ? true : false;
Cara desculpa minha ignorância e por reativar este topico mas não obtive sucesso para aplicar sua função acusando erro na llinha 38, você saberia me informar o pq?
vlw t+.