Script para Validar CNPJ em PHP

Aprenda como implementar facilmente um script para validação de CNPJ's em PHP

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.


Gostou? Divulgue Este Artigo!