Script para Validar CNPJ em PHP
Neste tutorial, você vai aprender como programar uma função em PHP para validar um CNPJ seguindo o algoritmo do CNPJ que já apresentamos nesse site.
Primeiro, vamos dar uma olhada na função pronta em na sequência, analisaremos o código linha a linha:
Observação: Esse código é compatível com PHP >= 7.0
function validaCNPJ($cnpj = null) { // Verifica se um número foi informado if(empty($cnpj)) { return false; } // Elimina possivel mascara $cnpj = preg_replace("/[^0-9]/", "", $cnpj); $cnpj = str_pad($cnpj, 14, '0', STR_PAD_LEFT); // Verifica se o numero de digitos informados é igual a 11 if (strlen($cnpj) != 14) { return false; } // Verifica se nenhuma das sequências invalidas abaixo // foi digitada. Caso afirmativo, retorna falso else if ($cnpj == '00000000000000' || $cnpj == '11111111111111' || $cnpj == '22222222222222' || $cnpj == '33333333333333' || $cnpj == '44444444444444' || $cnpj == '55555555555555' || $cnpj == '66666666666666' || $cnpj == '77777777777777' || $cnpj == '88888888888888' || $cnpj == '99999999999999') { return false; // Calcula os digitos verificadores para verificar se o // CPF é válido } else { $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)); } }
Na linha 3, verificamos se uma string foi passada como parâmetro. Caso negativo, o script retorna false.
Na linha 8, removemos todos os caracteres não númericos do CNPJ passado como parâmetro, eliminando uma possível máscara contendo "." e "-".
Na linha 13 verificamos se, após a limpeza da string, temos o número correto de caracteres (14) na string restante.
Caso a verificação seja verdadeira, verificamos com o else if da linha 18 se o CNPJ informado é composto por valores iguais. Essa checagem é necessária pois, se aplicarmos o algoritmo do CNPJ sobre um número todo igual como "33.333.333-3333/33", teoricamente os dígitos verificadores estão corretos, mesmo este NÃO sendo um número válido.
As linha 31 em diante calculam os dígitos verificadores de acordo com o algoritmo do CNPJ.
Ao final, na instrução return temos o teste lógico para saber se os dígitos informados são iguais aos computados. Caso afirmativo, temos um CNPJ válido e o boolean true é retornado. Caso negativo, false é retornado.
Simples e prático, certo? Se você ainda não desenvolve em PHP e tem vontade de aprender, recomendamos o site http://www.cursodephp.com.br. Esta página apresenta um curso de PHP completo e gratuito, extremamente instrutivo.
Para ver este script em ação, acesse nossa página do validador de CNPJ online. Se você quiser testar seu próprio script gerado, após implementá-lo, utilize nossa página inicial para gerar cnpj válido.