- substr: documentation ( source)
- ceil: documentation ( source)
- strrev: documentation ( source)
<?php
function ean_checksum($eancode) {
if(strlen($eancode) != 12) {
return '-1';
}
$oddsum=0;
$evensum=0;
$total=0;
$eanvalue=$eancode;
$finalean = strrev(substr($eanvalue,0,12));
for($i=0;$i<strlen($finalean);$i++) {
if(($i % 2) == 0) {
$oddsum += intval($finalean[$i]);
}
else {
$evensum += intval($finalean[$i]);
}
}
$total=($oddsum * 3) + $evensum;
$check = intval(10 - ceil($total % 10.0)) %10;
return $check;
}
$ean = '074436100720';
echo ean_checksum($ean);