Questa funzione permette di calcolare il check digit degli EAN13, utile sia dovendo generarlo che dovendo verificarne la lettura corretta
function get_ean_checkdigit($ean12, $full){ $ean12 =(string)$ean12; // 1. Sommo le posizioni dispari $even_sum = $ean12{1} + $ean12{3} + $ean12{5} + $ean12{7} + $ean12{9} + $ean12{11}; // 2. le moltiplico x 3 $even_sum_three = $even_sum * 3; // 3. Sommo le posizioni pari $odd_sum = $ean12{0} + $ean12{2} + $ean12{4} + $ean12{6} + $ean12{8} + $ean12{10}; // 4. Sommo i parziali precedenti $total_sum = $even_sum_three + $odd_sum; // 5. Il check digit è il numero più piccolo sottomultiplo di 10 $next_ten = (ceil($total_sum/10))*10; $check_digit = $next_ten - $total_sum; if($full==true) { // Ritorna tutto l'ean return $ean12.$check_digit; } else { // Ritorna solo il check-digit return $check_digit; } } |