php valider iban

Validation d'un IBAN

Une petite fonction php qui permet de valider un IBAN

valider iban, verification iban, iban valide, validation iban, v2rification iban, php controle iban

Date de publication : 2011-02-21 12:06:18

Voici une fonction php qui permet de valider un iban.

L'iban est une chaine de caractères alphanumériques qui fait 30 caractères maximum et 18 caractères minimum. Les deux premiers caractères correspondent au code ISO du pays et les deux caractères suivant représentent la clé de vérification de l'iban.

Pour plus d'informations sur ce format : IBAN sur Wikipedia (EN)

Si vous souhaitez valider un rib voici une version plus simple : Vérifier un rib.

Vérification d'un IBAN


function isValidIban($iban)
{
/*Régles de validation par pays*/
static $rules = array(
'AL'=>'[0-9]{8}[0-9A-Z]{16}',
'AD'=>'[0-9]{8}[0-9A-Z]{12}',
'AT'=>'[0-9]{16}',
'BE'=>'[0-9]{12}',
'BA'=>'[0-9]{16}',
'BG'=>'[A-Z]{4}[0-9]{6}[0-9A-Z]{8}',
'HR'=>'[0-9]{17}',
'CY'=>'[0-9]{8}[0-9A-Z]{16}',
'CZ'=>'[0-9]{20}',
'DK'=>'[0-9]{14}',
'EE'=>'[0-9]{16}',
'FO'=>'[0-9]{14}',
'FI'=>'[0-9]{14}',
'FR'=>'[0-9]{10}[0-9A-Z]{11}[0-9]{2}',
'GE'=>'[0-9A-Z]{2}[0-9]{16}',
'DE'=>'[0-9]{18}',
'GI'=>'[A-Z]{4}[0-9A-Z]{15}',
'GR'=>'[0-9]{7}[0-9A-Z]{16}',
'GL'=>'[0-9]{14}',
'HU'=>'[0-9]{24}',
'IS'=>'[0-9]{22}',
'IE'=>'[0-9A-Z]{4}[0-9]{14}',
'IL'=>'[0-9]{19}',
'IT'=>'[A-Z][0-9]{10}[0-9A-Z]{12}',
'KZ'=>'[0-9]{3}[0-9A-Z]{3}[0-9]{10}',
'KW'=>'[A-Z]{4}[0-9]{22}',
'LV'=>'[A-Z]{4}[0-9A-Z]{13}',
'LB'=>'[0-9]{4}[0-9A-Z]{20}',
'LI'=>'[0-9]{5}[0-9A-Z]{12}',
'LT'=>'[0-9]{16}',
'LU'=>'[0-9]{3}[0-9A-Z]{13}',
'MK'=>'[0-9]{3}[0-9A-Z]{10}[0-9]{2}',
'MT'=>'[A-Z]{4}[0-9]{5}[0-9A-Z]{18}',
'MR'=>'[0-9]{23}',
'MU'=>'[A-Z]{4}[0-9]{19}[A-Z]{3}',
'MC'=>'[0-9]{10}[0-9A-Z]{11}[0-9]{2}',
'ME'=>'[0-9]{18}',
'NL'=>'[A-Z]{4}[0-9]{10}',
'NO'=>'[0-9]{11}',
'PL'=>'[0-9]{24}',
'PT'=>'[0-9]{21}',
'RO'=>'[A-Z]{4}[0-9A-Z]{16}',
'SM'=>'[A-Z][0-9]{10}[0-9A-Z]{12}',
'SA'=>'[0-9]{2}[0-9A-Z]{18}',
'RS'=>'[0-9]{18}',
'SK'=>'[0-9]{20}',
'SI'=>'[0-9]{15}',
'ES'=>'[0-9]{20}',
'SE'=>'[0-9]{20}',
'CH'=>'[0-9]{5}[0-9A-Z]{12}',
'TN'=>'[0-9]{20}',
'TR'=>'[0-9]{5}[0-9A-Z]{17}',
'AE'=>'[0-9]{19}',
'GB'=>'[A-Z]{4}[0-9]{14}'
);
/*On vérifie la longueur minimale*/
if(mb_strlen($iban) < 18)
{
return false;
}
/*On récupère le code ISO du pays*/
$ctr = substr($iban,0,2);
if(isset($rules[$ctr]) === false)
{
return false;
}
/*On récupère la règle de validation en fonction du pays*/
$check = substr($iban,4);
/*Si la règle n'est pas bonne l'IBAN n'est pas valide*/
if(preg_match('~'.$rules[$ctr].'~',$check) !== 1)
{
return false;
}
/*On récupère la chaine qui permet de calculer la validation*/
$check = $check.substr($iban,0,4);
/*On remplace les caractères alpha par leurs valeurs décimales*/
$check = str_replace(
array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T','U', 'V', 'W', 'X', 'Y', 'Z'),
array('10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35'),
$check
);
/*On effectue la vérification finale*/
return bcmod($check,97) === '1';
}

Image : Artnoose

 
 

b1n@sp1n