Como comprobar la validez de un EAN13

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 ) ;
}

Relacionados