Huymada

CPF

May 22nd, 2017
591
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.21 KB | None | 0 0
  1. <?php
  2. /**
  3.  * Receita Federal - Cadastro de Pessoa Física
  4.  * @package Harverst
  5.  * @version 2019-11-29
  6.  */
  7.  
  8.     # Complementa o número do documento com ZERO à esquerda
  9.         function cpf_completar($input) {
  10.             return (string) str_pad($input, 9, '0', STR_PAD_LEFT);
  11.         }
  12.  
  13.     # Formatação com máscara de entrada
  14.         function cpf_formatar($input, $output = '###.###.###-##') {
  15.             for($i = 0, $l = strlen($input); $i < $l; ++$i) {
  16.                 $output[strpos($output, '#')] = $input[$i];
  17.             }
  18.             return $output;
  19.         }
  20.  
  21.     # Origem do documento
  22.         function cpf_origem($input) {
  23.             if($input[8] == 0) {
  24.                 return 'RS';
  25.             }
  26.             elseif($input[8] == 1) {
  27.                 return 'DF, GO, MS, MT, TO';
  28.             }
  29.             elseif($input[8] == 2) {
  30.                 return 'AC, AM, AP, PA, RO, RR';
  31.             }
  32.             elseif($input[8] == 3) {
  33.                 return 'CE, MA, PI';
  34.             }
  35.             elseif($input[8] == 4) {
  36.                 return 'AL, PB, PE, RN';
  37.             }
  38.             elseif($input[8] == 5) {
  39.                 return 'BA, SE';
  40.             }
  41.             elseif($input[8] == 6) {
  42.                 return 'MG';
  43.             }
  44.             elseif($input[8] == 7) {
  45.                 return 'ES, RJ';
  46.             }
  47.             elseif($input[8] == 8) {
  48.                 return 'SP';
  49.             }
  50.             elseif($input[8] == 9) {
  51.                 return 'PR, SC';
  52.             }
  53.             else {
  54.                 return '00';
  55.             }
  56.         }
  57.  
  58.     # Validação do documento
  59.         function cpf_validar($input) {
  60.             $input = preg_replace('/\D/', '', $input);
  61.                 if(strlen($input) != 11) return false;
  62.                 $sum = 0;
  63.                 for($i = 0; $i < 9; ++$i) {
  64.                     $sum += $input[$i] * (10 - $i);
  65.                 }
  66.                 $mod = $sum % 11;
  67.                 $digit = ($mod > 1) ? (11 - $mod) : 0;
  68.                 if($input[9] != $digit) return false;
  69.                 $sum = 0;
  70.                 for($i = 0; $i < 10; ++$i) {
  71.                     $sum += $input[$i] * (11 - $i);
  72.                 }
  73.                 $mod = $sum % 11;
  74.                 $digit = ($mod > 1) ? (11 - $mod) : 0;
  75.                 if($input[10] != $digit) return false;
  76.                 if(str_repeat($input[0], 11) == $input) {
  77.                     return false;
  78.                 }
  79.                 else {
  80.                     return true;
  81.                 }
  82.         }
  83.  
  84.     # Obtém os digitos verificadores
  85.         function cpf_verificador($input) {
  86.             $first = (
  87.                 $input[8] * 9 + $input[7] * 8 +
  88.                 $input[6] * 7 + $input[5] * 6 +
  89.                 $input[4] * 5 + $input[3] * 4 +
  90.                 $input[2] * 3 + $input[1] * 2 + $input[0]
  91.             ) % 11;
  92.  
  93.             if($first === 10) $first = 0;
  94.  
  95.             $second = (
  96.                 $first * 9 +
  97.                 $input[8] * 8 + $input[7] * 7 +
  98.                 $input[6] * 6 + $input[5] * 5 +
  99.                 $input[4] * 4 + $input[3] * 3 +
  100.                 $input[2] * 2 + $input[1]
  101.             ) % 11;
  102.  
  103.             if($second === 10) $second = 0;
  104.  
  105.             $controller = $first * 10 + $second;
  106.                 if($controller === 0) $controller = '00';
  107.                 if($controller > 0 && $controller < 10) $controller = '0' . $controller;
  108.                     return $controller;
  109.         }
  110.  
  111.     # Documento Completo
  112.         function cpf_documento($input) {
  113.             $input = cpf_completar($input);
  114.             $output = $input . cpf_verificador($input);
  115.                 return($output);
  116.         }
Advertisement
Add Comment
Please, Sign In to add comment