Finansal projelerde hatalı para transferlerini önlemek için IBAN doğrulaması hayati önem taşır. Sadece karakter sayısını kontrol etmek yeterli değildir; IBAN'ın içindeki kontrol basamaklarını (checksum) matematiksel olarak doğrulamak gerekir.
Türkiye IBAN Yapısı
Türkiye'de kullanılan IBAN'lar standart olarak 26 karakterden oluşur ve şu yapıya sahiptir:
| Bölüm | Karakter Sayısı | Açıklama |
| Ülke Kodu | 2 Karakter | Türkiye için "TR" |
| Kontrol Basamakları | 2 Rakam | IBAN'ın doğruluğunu teyit eden algoritma sonucu |
| Banka Kodu | 5 Rakam | Bankayı tanımlayan benzersiz kod |
| Rezerv Alanı | 1 Rakam | Genellikle sıfır (0) olarak kullanılır |
| Hesap Numarası | 16 Rakam | Müşteriye özel hesap numarası |
PHP IBAN Doğrulama Fonksiyonu
Aşağıdaki fonksiyon, herhangi bir kütüphane gerektirmeden MOD 97 algoritmasını kullanarak IBAN'ın matematiksel olarak geçerli olup olmadığını kontrol eder.
<?php
function verifyIBAN($iban)
{
$iban = str_replace(' ', '', $iban);
$iban = strtoupper($iban);
if (strlen($iban) < 4) {
return false;
}
// Ülke bazlı uzunluk kontrolü (Türkiye için 26)
if (substr($iban, 0, 2) === 'TR' && strlen($iban) !== 26) {
return false;
}
// İlk 4 karakteri sona taşı
$checkIban = substr($iban, 4) . substr($iban, 0, 4);
// Harfleri rakama çevir (A=10, B=11, ..., Z=35)
$digits = '';
foreach (str_split($checkIban) as $char) {
if (is_numeric($char)) {
$digits .= $char;
} else {
$digits .= ord($char) - 55;
}
}
// Büyük sayılarla mod işlemi (BCMath yoksa manuel döngü)
$remainder = 0;
foreach (str_split($digits, 7) as $part) {
$remainder = ($remainder . $part) % 97;
}
return $remainder === 1;
}
IBAN Çözümleme (Parsing)
Doğrulanmış bir IBAN içerisinden banka kodunu ve hesap numarasını ayıklamak için şu fonksiyonu kullanabilirsiniz:
function parseIBAN($iban)
{
$iban = str_replace(' ', '', $iban);
return [
'country' => substr($iban, 0, 2),
'check' => substr($iban, 2, 2),
'bank' => substr($iban, 4, 5),
'account' => substr($iban, 10, 16)
];
}
-
MOD 97 Algoritması: IBAN doğrulamada dünya standardı olan bu algoritma, ilk dört karakterin sona eklenip harflerin sayıya çevrilmesiyle çalışır.
-
Karakter Temizliği: Kullanıcılar genellikle IBAN'ı boşluklu kopyalar.
str_replaceile boşlukları temizlemek kullanıcı deneyimini artırır. -
Büyük/Küçük Harf: Algoritmanın sağlıklı çalışması için
strtoupperkullanımı zorunludur.