borrame.com - Colección particular de recortes de código y documentación para programación web

Canales RSS

Lo más fresco

  1. Enlaces sobre desarrollo web Modificado
  2. Cadena aleatoria en PHP Modificado
  3. Recortar texto Nuevo

Sugerencias del chef

Lo más visitado

  1. Canales RSS
  2. Formato condicional según el día de la semana
  3. Enlaces sobre desarrollo web
  4. Recortar texto
  5. Convertir de minutos a horas
Compartir esta página

Dígito de control de una cuenta corriente

Este código en PHP permite calcular el dígito de control de un número de cuenta bancario español.

/** * Calcula el dígito de control de un número de cuenta CCC (código cuenta cliente) * * Nota: el DC calculado sólo es correcto si los parámetros son cadenas numéricas válidas * * @param string $entidad Cadena de 4 dígitos * @param string $oficina Cadena de 4 dígitos * @param string $cuenta Cadena de 10 dígitos * @return string Cadena de 2 dígitos (el primero para entidad/oficina, el segundo para cuenta) * * @version 2013-01-04 */ function calcular_dc($entidad, $oficina, $cuenta){ $dc = ""; $pesos = array(6, 3, 7, 9, 10, 5, 8, 4, 2, 1); foreach(array($entidad . $oficina, $cuenta) as $cadena){ $suma = 0; for($i=0, $len=strlen($cadena); $i<$len; $i++){ $suma += $pesos[$i] * substr($cadena, $len-$i-1, 1); } $digito = 11-$suma%11; if($digito==11){ $digito = 0; }elseif($digito==10){ $digito = 1; } $dc .= $digito; } return $dc; }

(Confío en que no se trate de un secreto industrial; es imposible encontrar en Google ninguna referencia oficial sobre el formato).

Versión multi-byte

Si la aplicación utiliza UTF-8 u otro juego de caracteres multi-byte el algoritmo es el mismo pero necesitamos usar las funciones de manejo de caracteres apropiadas:

/** * Calcula el dígito de control de un número de cuenta CCC (código cuenta cliente) * * Nota: el DC calculado sólo es correcto si los parámetros son cadenas numéricas válidas * * @param string $entidad Cadena de 4 dígitos * @param string $oficina Cadena de 4 dígitos * @param string $cuenta Cadena de 10 dígitos * @return string Cadena de 2 dígitos (el primero para entidad/oficina, el segundo para cuenta) * * @version 2013-01-04 */ function mb_calcular_dc($entidad, $oficina, $cuenta){ $dc = ""; $pesos = array(6, 3, 7, 9, 10, 5, 8, 4, 2, 1); foreach(array($entidad . $oficina, $cuenta) as $cadena){ $suma = 0; for($i=0, $len=mb_strlen($cadena); $i<$len; $i++){ $suma += $pesos[$i] * mb_substr($cadena, $len-$i-1, 1); } $digito = 11-$suma%11; if($digito==11){ $digito = 0; }elseif($digito==10){ $digito = 1; } $dc .= $digito; } return $dc; }

Historial

v2013-01-04
Eliminar código duplicado y documentar mejor.
v2010-11-02
Primera versión.

Esta página ha sido impresa el jueves 13 de agosto de 2026 (17:06:45 +0200) desde https://borrame.com/recortes/php/digito-control-ccc.html. La última vez que miré contenía HTML válido con CSS fresquito y si tiene flatas de ortografía ha sido sin querer.

Lorem ipsum dolor sit amet.

© 2005-2026 by Álvaro González (alvaro.es) • Burgos (España) • borrame.com