Example #1
0
 public static function isCnpj($cnpj)
 {
     $cnpj = (string) preg_replace('/[^0-9]/', '', $cnpj);
     $cnpj_original = $cnpj;
     $primeiros_numeros_cnpj = substr($cnpj, 0, 12);
     function multiplica_cnpj($cnpj, $posicao = 5)
     {
         $calculo = 0;
         for ($i = 0; $i < strlen($cnpj); $i++) {
             $calculo = $calculo + $cnpj[$i] * $posicao;
             $posicao--;
             if ($posicao < 2) {
                 $posicao = 9;
             }
         }
         return $calculo;
     }
     $primeiro_calculo = multiplica_cnpj($primeiros_numeros_cnpj);
     $primeiro_digito = $primeiro_calculo % 11 < 2 ? 0 : 11 - $primeiro_calculo % 11;
     $primeiros_numeros_cnpj = $primeiros_numeros_cnpj . $primeiro_digito;
     $segundo_calculo = multiplica_cnpj($primeiros_numeros_cnpj, 6);
     $segundo_digito = $segundo_calculo % 11 < 2 ? 0 : 11 - $segundo_calculo % 11;
     $cnpj = $primeiros_numeros_cnpj . $segundo_digito;
     if ($cnpj === $cnpj_original) {
         return true;
     }
     return false;
 }
 /**
  * Valida CNPJ
  *
  * @author Luiz Otávio Miranda <contato@todoespacoonline.com/w>
  * @param string $cnpj 
  * @return bool true para CNPJ correto
  *
  */
 public function valida_cnpj($cnpj)
 {
     // Deixa o CNPJ com apenas números
     $cnpj = preg_replace('/[^0-9]/', '', $cnpj);
     // Garante que o CNPJ é uma string
     $cnpj = (string) $cnpj;
     // O valor original
     $cnpj_original = $cnpj;
     // Captura os primeiros 12 números do CNPJ
     $primeiros_numeros_cnpj = substr($cnpj, 0, 12);
     /**
      * Multiplicação do CNPJ
      *
      * @param string $cnpj Os digitos do CNPJ
      * @param int $posicoes A posição que vai iniciar a regressão
      * @return int O
      *
      */
     if (!function_exists('multiplica_cnpj')) {
         function multiplica_cnpj($cnpj, $posicao = 5)
         {
             // Variável para o cálculo
             $calculo = 0;
             // Laço para percorrer os item do cnpj
             for ($i = 0; $i < strlen($cnpj); $i++) {
                 // Cálculo mais posição do CNPJ * a posição
                 $calculo = $calculo + $cnpj[$i] * $posicao;
                 // Decrementa a posição a cada volta do laço
                 $posicao--;
                 // Se a posição for menor que 2, ela se torna 9
                 if ($posicao < 2) {
                     $posicao = 9;
                 }
             }
             // Retorna o cálculo
             return $calculo;
         }
     }
     // Faz o primeiro cálculo
     $primeiro_calculo = multiplica_cnpj($primeiros_numeros_cnpj);
     // Se o resto da divisão entre o primeiro cálculo e 11 for menor que 2, o primeiro
     // Dígito é zero (0), caso contrário é 11 - o resto da divisão entre o cálculo e 11
     $primeiro_digito = $primeiro_calculo % 11 < 2 ? 0 : 11 - $primeiro_calculo % 11;
     // Concatena o primeiro dígito nos 12 primeiros números do CNPJ
     // Agora temos 13 números aqui
     $primeiros_numeros_cnpj .= $primeiro_digito;
     // O segundo cálculo é a mesma coisa do primeiro, porém, começa na posição 6
     $segundo_calculo = multiplica_cnpj($primeiros_numeros_cnpj, 6);
     $segundo_digito = $segundo_calculo % 11 < 2 ? 0 : 11 - $segundo_calculo % 11;
     // Concatena o segundo dígito ao CNPJ
     $cnpj = $primeiros_numeros_cnpj . $segundo_digito;
     // Verifica se o CNPJ gerado é idêntico ao enviado
     if ($cnpj === $cnpj_original) {
         return true;
     }
 }
Example #3
0
 public function valida_cnpj($cnpj)
 {
     $cnpj = preg_replace('/[^0-9]/', '', $cnpj);
     $cnpj = (string) $cnpj;
     $cnpj_original = $cnpj;
     $primeiros_numeros_cnpj = substr($cnpj, 0, 12);
     /**
      * Multiplicação do CNPJ
      *
      * @param string $cnpj Os digitos do CNPJ
      * @param int $posicoes A posição que vai iniciar a regressão
      * @return int O
      *
      */
     function multiplica_cnpj($cnpj, $posicao = 5)
     {
         $calculo = 0;
         for ($i = 0; $i < strlen($cnpj); $i++) {
             $calculo = $calculo + $cnpj[$i] * $posicao;
             $posicao--;
             if ($posicao < 2) {
                 $posicao = 9;
             }
         }
         return $calculo;
     }
     $primeiro_calculo = multiplica_cnpj($primeiros_numeros_cnpj);
     $primeiro_digito = $primeiro_calculo % 11 < 2 ? 0 : 11 - $primeiro_calculo % 11;
     $primeiros_numeros_cnpj .= $primeiro_digito;
     $segundo_calculo = multiplica_cnpj($primeiros_numeros_cnpj, 6);
     $segundo_digito = $segundo_calculo % 11 < 2 ? 0 : 11 - $segundo_calculo % 11;
     $cnpj = $primeiros_numeros_cnpj . $segundo_digito;
     if ($cnpj === $cnpj_original) {
         return true;
     }
 }