regra se o resultado for menor que 2 o valor do dígito verificador é 0
senao subtraímos o valor de 11 para obter o dígito
exemplo verificador é (11 - 3) o primeiro digito é 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 é 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 é valido so testar se os numeros verificadores são 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 não to com paciencia pra mecher mais nele mas da pra diminuir mais linhas ainda :D , e quem tiver duvidas so perguntar
Pergunta
Beraldo
Script postado por: Fabyo
Funçao para validar CNPJ
Como funciona os numeros do CNPJ
O numeros do CNPJ é composto por três partes de algarismos
a primeira parte é o número da inscrição
a segunda parte depois da barra( / ) é o número de filiais
e o final são os 2 digitos verificadores
Como calcular um numero de cnpj para saber se ele é 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 é 0
senao subtraímos o valor de 11 para obter o dígito
exemplo verificador é (11 - 3) o primeiro digito é 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 é 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 é valido so testar se os numeros verificadores são 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 não 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)
{
$cnpj = preg_replace ("@[./-]@", "", $cnpj);
if (strlen ($cnpj) <> 14 or !is_numeric ($cnpj))
{
return 0;
}
$j = 5;
$k = 6;
$soma1 = "";
$soma2 = "";
for ($i = 0; $i < 13; $i++)
{
$j = $j == 1 ? 9 : $j;
$k = $k == 1 ? 9 : $k;
$soma2 += ($cnpj{$i} * $k);
if ($i < 12)
{
$soma1 += ($cnpj{$i} * $j);
}
$k--;
$j--;
}
$digito1 = $soma1 % 11 < 2 ? 0 : 11 - $soma1 % 11;
$digito2 = $soma2 % 11 < 2 ? 0 : 11 - $soma2 % 11;
return (($cnpj{12} == $digito1) and ($cnpj{13} == $digito2));
}
echo Valida_CNPJ ("11.222.333/0001-81");
//retorna 1 em caso de valido e 0 ou false em caso de invalido
?>
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.