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.