Skrypt (funkcja) sprawdza czy wpisana liczba (do funkcji wpisujemy typ string) jest własciwa pod względem zgodności z algorytmem obliczania tej ostatniej cyfry kontrolnej.
Kod
<?php
////////////////////////////////////////////////////////////////
// Funkcja sprawdzajaca cyfre kontrolna dla numeru w
// standardzie EAN.UCC 8,13 lub 13+2
// Na wejsciu mamy liczbe, cyfre 8,13 lub 15 znakowa (string ! - funkcja nie sprawdza typu)
// Na wyjsciu otrzymujemy true lub false
//
// droocik(na)WYTNIJ_TOTO_pdz.pl
//
// This program is free software. You can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License.
/////////////////////////////////////////////////////////////////
function ean ($liczba)
{
$jaki_ean = strlen($liczba);
switch ($jaki_ean)
{
case 8:
$typ_ean = 7;
$j = 3;
break;
case 13:
$typ_ean = 12;
$j= 1;
break;
case 15: // EAN 13+2
$typ_ean = 12;
$j= 1;
break;
$typ_ean = 0;
return false; // zaden z powyzszych - blad, false na wyjsciu!
}
if ($typ_ean <>0) // jest 8,13,15 znakow!
{
for ($i=1; $i <= $typ_ean; $i++)
{
$tablica[$i] = substr($liczba,$i-1,1)*$j;
if ($j == 3) $j=1;
else $j=3;
$suma = $suma+$tablica[$i];
}
if ($suma%10 == 0) // szczegolny przypadek na reszte == 0
{
if (($suma%10) == substr($liczba,$typ_ean,1)) return true;
else return false;
}
else
{
if (10-($suma%10) == substr($liczba,$typ_ean,1)) return true;
else return false;
}
} // koniec glownej petli if (na 7,13,15 znakow)
} // koniec funkcji
?>
////////////////////////////////////////////////////////////////
// Funkcja sprawdzajaca cyfre kontrolna dla numeru w
// standardzie EAN.UCC 8,13 lub 13+2
// Na wejsciu mamy liczbe, cyfre 8,13 lub 15 znakowa (string ! - funkcja nie sprawdza typu)
// Na wyjsciu otrzymujemy true lub false
//
// droocik(na)WYTNIJ_TOTO_pdz.pl
//
// This program is free software. You can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License.
/////////////////////////////////////////////////////////////////
function ean ($liczba)
{
$jaki_ean = strlen($liczba);
switch ($jaki_ean)
{
case 8:
$typ_ean = 7;
$j = 3;
break;
case 13:
$typ_ean = 12;
$j= 1;
break;
case 15: // EAN 13+2
$typ_ean = 12;
$j= 1;
break;
$typ_ean = 0;
return false; // zaden z powyzszych - blad, false na wyjsciu!
}
if ($typ_ean <>0) // jest 8,13,15 znakow!
{
for ($i=1; $i <= $typ_ean; $i++)
{
$tablica[$i] = substr($liczba,$i-1,1)*$j;
if ($j == 3) $j=1;
else $j=3;
$suma = $suma+$tablica[$i];
}
if ($suma%10 == 0) // szczegolny przypadek na reszte == 0
{
if (($suma%10) == substr($liczba,$typ_ean,1)) return true;
else return false;
}
else
{
if (10-($suma%10) == substr($liczba,$typ_ean,1)) return true;
else return false;
}
} // koniec glownej petli if (na 7,13,15 znakow)
} // koniec funkcji
?>
To tyle. Jesli ktoś chce skrypt obliczający ostatnią cyfrę kontrolną, to można to na podstawie w/w zrobic podobnie lub napiszcie, bo to no problem.
Pozdr.