Funkcja walidująca numer PESEL
Ostatnio przyszło mi stworzyć funkcję walidującą numer PESEL. Oczywiście najpierw pogrzebałem w encyklopedii (można ją znaleźć pod adresem www.google.pl), and viola!
Oto kod:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function sprawdzPESEL($str)
{
if (strlen($str) != 11 || !is_numeric($str)) //sprawdzamy czy podany numer ma 11 znaków
{
return false;
}
$arrSteps = array(1, 3, 7, 9, 1, 3, 7, 9, 1, 3); // tablica z odpowiednimi wagami
$intSum = 0;
for ($i = 0; $i < 10; $i++)
{
$intSum += $arrSteps[$i] * $str[$i]; //mnożymy każdy ze znaków przez wagę i sumujemy wszystko
}
$int = 10 - $intSum % 10; //obliczamy sumę kontrolną
$intControlNr = ($int == 10)?0:$int;
if ($intControlNr == $str[10]) //sprawdzamy czy taka sama suma kontrolna jest w ciągu
{
return true;
}
return false;
}