cagartner
7/17/2017 - 12:10 PM

Verify if brazilian cnpj if valid

Verify if brazilian cnpj if valid

<?php
    function validateCNPJ($cnpj)
    {
        $cnpj = preg_replace('/[^0-9]/', '', (string) $cnpj);

        if (strlen($cnpj) != 14) {
            return false;
        }

        for ($i = 0, $j = 5, $sum = 0; $i < 12; $i++) {
            $sum += $cnpj{$i} * $j;
            $j = ($j == 2) ? 9 : $j - 1;
        }

        $left = $sum % 11;

        if ($cnpj{12} != ($left < 2 ? 0 : 11 - $left)) {
            return false;
        }

        for ($i = 0, $j = 6, $sum = 0; $i < 13; $i++) {
            $sum += $cnpj{$i} * $j;
            $j = ($j == 2) ? 9 : $j - 1;
        }

        $left = $sum % 11;

        return $cnpj{13} == ($left < 2 ? 0 : 11 - $left);
    }