Verificar cuenta bancaria con IBAN en PHP
PHP
Publicado el 12 de Abril del 2018 por Xavi (548 códigos)
4.429 visualizaciones desde el 12 de Abril del 2018
Este simple código verifica que una cuenta bancaria IBAN se haya escrito correctamente.
<?php
/**
* Funcion para verificar si una cuenta IBAN es correcta
* @param string $iban
* @return boolean
*/
function checkIBAN($iban)
{
if(strlen($iban)==24)
{
$digitoControl=getCodigoControl_IBAN(strtoupper(substr($iban,0,2)), substr($iban,4));
if($digitoControl==substr($iban,2,2))
return true;
}
return false;
}
/**
* Funcion que devuelve el codigo de verificacion de una cuenta bancaria
* @param string $codigoPais los dos primeros caracteres del IBAN
* @param string $cc la cuenta corriente, que son los ultimos 20 caracteres del IBAN
* @return string devuelve el codigo de control
*/
function getCodigoControl_IBAN($codigoPais,$cc)
{
// cada letra de pais tiene un valor
$valoresPaises = array(
'A' => '10',
'B' => '11',
'C' => '12',
'D' => '13',
'E' => '14',
'F' => '15',
'G' => '16',
'H' => '17',
'I' => '18',
'J' => '19',
'K' => '20',
'L' => '21',
'M' => '22',
'N' => '23',
'O' => '24',
'P' => '25',
'Q' => '26',
'R' => '27',
'S' => '28',
'T' => '29',
'U' => '30',
'V' => '31',
'W' => '32',
'X' => '33',
'Y' => '34',
'Z' => '35'
);
// reemplazamos cada letra por su valor numerico y ponemos los valores mas dos ceros al final de la cuenta
$dividendo = $cc.$valoresPaises[substr($codigoPais,0,1)].$valoresPaises[substr($codigoPais,1,1)].'00';
// Calculamos el modulo 97 sobre el valor numerico y lo restamos de 98
// Utilizamos bcmod para poder realizar el calculo, ya que un int sobre 32 bits no puede gestionar tantos numeros
$digitoControl = 98 - bcmod($dividendo, '97');
// Si el digito de control es un solo numero, añadimos un cero al delante
if(strlen($digitoControl)==1)
{
$digitoControl = '0'.$digitoControl;
}
return $digitoControl;
}
if(checkIBAN("ES000000000000000000000"))
{
echo "La cuenta es correcta";
}else{
echo "La cuenta NO es correcta";
}
?>
Comentarios sobre la versión: Versión 1.0 (0)
No hay comentarios