Para maiores informações sobre os cálculos do CNPJ podem ser vistos neste artigo postado em meu Blog.
class_cnpj.php
1: <?
2: /*
3: -----------------------------------------------
4: Desenvolvido por Cristiano Ávila Salomão
5: -----------------------------------------------
6: Descrição da Classe:
7: - Informa se o CNPJ é valido
8: - Calcula os digitos verificadores do CNPJ
9: -----------------------------------------------
10: */
11: class checa_cnpj {
12: function CalculaCNPJ($t,$Valor) {
13: for ($i = 0; $i <= strlen($Valor); $i++) {
14: $Resultado += $Valor{$i} * $t;
15: $t--;
16: if ($t < 2) {
17: $t = 9;
18: }
19: }
20: return $Resultado;
21: }
22:
23: function CNPJ($CNPJ, $Tipo) {
24: // Pegar dados para gerar os digitos verificadores
25: $Caracter = array('.','/','-');
26: $Vaziu = array('','','');
27: $SomenteNumeros = str_replace($Caracter,$Vaziu,$CNPJ);
28: if ($Tipo == 1) {
29: $Valor = substr($SomenteNumeros,0,(strlen($SomenteNumeros)-2));
30: } else {
31: $Valor = $SomenteNumeros;
32: }
33:
34: // Calcular o Primeiro digito verificador
35: $T = $this->CalculaCNPJ(5,$Valor);
36: $T = $T % 11;
37: if ($T < 2) {
38: $D1 = 0;
39: } else {
40: $D1 = 11 - $T;
41: }
42:
43: // Calcular o Segundo digito verificador
44: $T = $this->CalculaCNPJ(6,$Valor.$D1);
45: $T = $T % 11;
46: if ($T < 2) {
47: $D2 = 0;
48: } else {
49: $D2 = 11 - $T;
50: }
51:
52: if ($Tipo == 1) {
53: // Resultado com os digitos verificadores corretos
54: $Final = $Valor.$D1.$D2;
55:
56: // Resultado da comparação
57: if ($Final == $SomenteNumeros) {
58: return "True";
59: } else {
60: return "False";
61: }
62: } else {
63: return $D1.$D2;
64: }
65: }
66:
67: function DV($CNPJ) {
68: return $this->CNPJ($CNPJ, 2);
69: }
70: }
71: ?>
Nenhum comentário:
Postar um comentário