Saltar al contenido

Genere EAN13 válido en PHP

Solución:

Como dijiste, 200 (en realidad todo el rango 200-299) es un código de país falso que indica que el número es un número interno. Eso significa que puede hacer el resto del número.

Un número EAN suele tener 13 dígitos, aunque también puede tener otras longitudes. Mantengámoslo en 13, ya que especificó el deseo de EAN13.

El decimotercer dígito es un dígito de control. Entonces, todo lo que tienes que hacer es realizar la misma validación pero con un giro. En lugar de calcular el dígito de control y validar si el último dígito coincide con el dígito de control, simplemente calcule el dígito de control y agréguelo a los 12 dígitos que ya tiene.

Realmente no he intentado modificar su código existente, ya que parece confuso y complejo, pero según las reglas de validación que encontré en Wikipedia, esto debería funcionar:

function generateEAN($number)
{
  $code="200" . str_pad($number, 9, '0');
  $weightflag = true;
  $sum = 0;
  // Weight for a digit in the checksum is 3, 1, 3.. starting from the last digit. 
  // loop backwards to make the loop length-agnostic. The same basic functionality 
  // will work for codes of different lengths.
  for ($i = strlen($code) - 1; $i >= 0; $i--)
  {
    $sum += (int)$code[$i] * ($weightflag?3:1);
    $weightflag = !$weightflag;
  }
  $code .= (10 - ($sum % 10)) % 10;
  return $code;
}

$number es el código interno que desea tener EAN. La función agrega el prefijo, el relleno de ceros y la suma de comprobación.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *