Los EAN13 están compuestos por 13 dígitos de los cuales el último es de check.
Mediante la siguiente función en php se puede comprobar si un EAN está correctamente formado:
function isValidEAN( $ean ){
$ean =(string)$ean;
// Debe tener 13 caracteres
if ( strlen( $ean ) != 13 ) {
return false ;
}
$even_sum = $ean{1} + $ean{3} + $ean{5} + $ean{7} + $ean{9} + $ean{11};
$even_sum_three = $even_sum * 3;
$odd_sum = $ean{0} + $ean{2} + $ean{4} + $ean{6} + $ean{8} + $ean{10};
$total_sum = $even_sum_three + $odd_sum;
$next_ten = (ceil($total_sum/10))*10;
$check_digit = $next_ten - $total_sum;
$valid = substr( $ean, 0, 12 ) . $check_digit ;
return ( $ean == $valid ) ;
}