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