Esempio n. 1
0
 /**
  *
  * @param string $cnpj
  * @return boolean 
  */
 public static function checkCnpj($cnpj)
 {
     $cnpj = str_replace(array('.', '/', '-'), '', $cnpj);
     $cnpj = trim($cnpj);
     if (empty($cnpj) || strlen($cnpj) != 14) {
         return FALSE;
     } else {
         if (ZendT_Lib::checkFake($cnpj, 14)) {
             return FALSE;
         } else {
             $rev_cnpj = strrev(substr($cnpj, 0, 12));
             for ($i = 0; $i <= 11; $i++) {
                 $i == 0 ? $multiplier = 2 : $multiplier;
                 $i == 8 ? $multiplier = 2 : $multiplier;
                 $multiply = $rev_cnpj[$i] * $multiplier;
                 $sum = $sum + $multiply;
                 $multiplier++;
             }
             $rest = $sum % 11;
             if ($rest == 0 || $rest == 1) {
                 $dv1 = 0;
             } else {
                 $dv1 = 11 - $rest;
             }
             $sub_cnpj = substr($cnpj, 0, 12);
             $rev_cnpj = strrev($sub_cnpj . $dv1);
             unset($sum);
             for ($i = 0; $i <= 12; $i++) {
                 $i == 0 ? $multiplier = 2 : $multiplier;
                 $i == 8 ? $multiplier = 2 : $multiplier;
                 $multiply = $rev_cnpj[$i] * $multiplier;
                 $sum = $sum + $multiply;
                 $multiplier++;
             }
             $rest = $sum % 11;
             if ($rest == 0 || $rest == 1) {
                 $dv2 = 0;
             } else {
                 $dv2 = 11 - $rest;
             }
             if ($dv1 == $cnpj[12] && $dv2 == $cnpj[13]) {
                 return TRUE;
             } else {
                 return FALSE;
             }
         }
     }
 }