Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
namespace Faker\Provider\pt_BR;
4
 
5
/**
6
 * Calculates one MOD 11 check digit based on customary Brazilian algorithms.
7
 *
8
 * @see http://en.wikipedia.org/wiki/Check_digit
9
 * @see http://pt.wikipedia.org/wiki/CNPJ#Algoritmo_de_Valida.C3.A7.C3.A3o
10
 * @see http://en.wikipedia.org/wiki/Cadastro_de_Pessoas_F%C3%ADsicas#Validation
11
 *
12
 * @param int|string $numbers Numbers on which generate the check digit
13
 *
14
 * @return int
15
 */
16
function check_digit($numbers)
17
{
18
    $numbers = (string) $numbers;
19
    $length = strlen($numbers);
20
    $second_algorithm = $length >= 12;
21
    $verifier = 0;
22
 
23
    for ($i = 1; $i <= $length; ++$i) {
24
        if (!$second_algorithm) {
25
            $multiplier = $i + 1;
26
        } else {
27
            $multiplier = ($i >= 9) ? $i - 7 : $i + 1;
28
        }
29
        $verifier += $numbers[$length - $i] * $multiplier;
30
    }
31
 
32
    $verifier = 11 - ($verifier % 11);
33
 
34
    if ($verifier >= 10) {
35
        $verifier = 0;
36
    }
37
 
38
    return $verifier;
39
}