Huymada icon

CPF

Huymada | PRO | 05/22/17 11:15:10 PM UTC | 0 ⭐ | 537 👁️ | Never ⏰ | []
PHP |

3.21 KB

|

None

|

0 👍

/

0 👎

<?php
/**
 * Receita Federal - Cadastro de Pessoa Física
 * @package Harverst
 * @version 2019-11-29
 */
 
    # Complementa o número do documento com ZERO à esquerda
        function cpf_completar($input) {
            return (string) str_pad($input, 9, '0', STR_PAD_LEFT);
        }
 
    # Formatação com máscara de entrada
        function cpf_formatar($input, $output = '###.###.###-##') {
            for($i = 0, $l = strlen($input); $i < $l; ++$i) {
                $output[strpos($output, '#')] = $input[$i];
            }
            return $output;
        }
 
    # Origem do documento
        function cpf_origem($input) {
            if($input[8] == 0) {
                return 'RS';
            }
            elseif($input[8] == 1) {
                return 'DF, GO, MS, MT, TO';
            }
            elseif($input[8] == 2) {
                return 'AC, AM, AP, PA, RO, RR';
            }
            elseif($input[8] == 3) {
                return 'CE, MA, PI';
            }
            elseif($input[8] == 4) {
                return 'AL, PB, PE, RN';
            }
            elseif($input[8] == 5) {
                return 'BA, SE';
            }
            elseif($input[8] == 6) {
                return 'MG';
            }
            elseif($input[8] == 7) {
                return 'ES, RJ';
            }
            elseif($input[8] == 8) {
                return 'SP';
            }
            elseif($input[8] == 9) {
                return 'PR, SC';
            }
            else {
                return '00';
            }
        }
 
    # Validação do documento
        function cpf_validar($input) {
            $input = preg_replace('/\D/', '', $input);
                if(strlen($input) != 11) return false;
                $sum = 0;
                for($i = 0; $i < 9; ++$i) {
                    $sum += $input[$i] * (10 - $i);
                }
                $mod = $sum % 11;
                $digit = ($mod > 1) ? (11 - $mod) : 0;
                if($input[9] != $digit) return false;
                $sum = 0;
                for($i = 0; $i < 10; ++$i) {
                    $sum += $input[$i] * (11 - $i);
                }
                $mod = $sum % 11;
                $digit = ($mod > 1) ? (11 - $mod) : 0;
                if($input[10] != $digit) return false;
                if(str_repeat($input[0], 11) == $input) {
                    return false;
                }
                else {
                    return true;
                }
        }
 
    # Obtém os digitos verificadores
        function cpf_verificador($input) {
            $first = (
                $input[8] * 9 + $input[7] * 8 +
                $input[6] * 7 + $input[5] * 6 +
                $input[4] * 5 + $input[3] * 4 +
                $input[2] * 3 + $input[1] * 2 + $input[0]
            ) % 11;
 
            if($first === 10) $first = 0;
 
            $second = (
                $first * 9 +
                $input[8] * 8 + $input[7] * 7 +
                $input[6] * 6 + $input[5] * 5 +
                $input[4] * 4 + $input[3] * 3 +
                $input[2] * 2 + $input[1]
            ) % 11;
 
            if($second === 10) $second = 0;
 
            $controller = $first * 10 + $second;
                if($controller === 0) $controller = '00';
                if($controller > 0 && $controller < 10) $controller = '0' . $controller;
                    return $controller;
        }
 
    # Documento Completo
        function cpf_documento($input) {
            $input = cpf_completar($input);
            $output = $input . cpf_verificador($input);
                return($output);
        }

Comments