Döviz Kuru Çekme: TCMB Verilerini PHP ile Çekmek

  • Konbuyu başlatan Konbuyu başlatan irfo
  • Başlangıç tarihi Başlangıç tarihi

irfo

Moderatör
Top Poster Of Month
Katılım
7 Ocak 2026
Mesajlar
290
Tepkime puanı
2
Puanları
18
Döviz kurlarını dinamik olarak sitenize eklemek için harici ve ücretli API'ler kullanmanıza gerek yoktur. TCMB'nin sunduğu ücretsiz XML servisi ile Dolar, Euro ve diğer para birimlerini saniyeler içinde çekebiliriz.

1. Kur Verilerini Çekme Fonksiyonu​


TCMB'nin XML yapısı hiyerarşiktir. Currency etiketleri altındaki ForexBuying (Döviz Alış) ve ForexSelling (Döviz Satış) değerlerini kullanacağız.

PHP:
<?php
function doviz_cek() {
// TCMB Günlük Kur Verisi URL'si
$url = "https://www.tcmb.gov.tr/kurlar/today.xml";

// Veriyi çek ve SimpleXML nesnesine dönüştür
$xml = @simplexml_load_file($url);

if ($xml === false) {
    return &quot;Veri alınamadı. Lütfen internet bağlantısını veya URL&#39;yi kontrol edin.&quot;;
}

// İstediğimiz kurları bir diziye aktaralım
$kurlar = [
    &#39;USD&#39; =&gt; [
        &#39;isim&#39;  =&gt; &#39;ABD DOLARI&#39;,
        &#39;alis&#39;  =&gt; $xml-&gt;Currency[0]-&gt;ForexBuying,
        &#39;satis&#39; =&gt; $xml-&gt;Currency[0]-&gt;ForexSelling
    ],
    &#39;EUR&#39; =&gt; [
        &#39;isim&#39;  =&gt; &#39;EURO&#39;,
        &#39;alis&#39;  =&gt; $xml-&gt;Currency[3]-&gt;ForexBuying,
        &#39;satis&#39; =&gt; $xml-&gt;Currency[3]-&gt;ForexSelling
    ],
    &#39;GBP&#39; =&gt; [
        &#39;isim&#39;  =&gt; &#39;İNGİLİZ STERLİNİ&#39;,
        &#39;alis&#39;  =&gt; $xml-&gt;Currency[4]-&gt;ForexBuying,
        &#39;satis&#39; =&gt; $xml-&gt;Currency[4]-&gt;ForexSelling
    ]
];

return $kurlar;

}

$veriler = doviz_cek();
?>

2. Verileri Tablo Halinde Gösterme​


Çektiğimiz verileri kullanıcı dostu bir HTML tablosuna dökelim.

PHP:
<table border="1" cellpadding="10" style="border-collapse: collapse; width: 100%; text-align: left;">
<thead>
<tr style="background-color: #f2f2f2;">
<th>Döviz Cinsi</th>
<th>Alış Fiyatı</th>
<th>Satış Fiyatı</th>
</tr>
</thead>
<tbody>
<?php foreach ($veriler as $kod => $kur): ?>
<tr>
<td><strong><?php echo $kur['isim']; ?> (<?php echo $kod; ?>)</strong></td>
<td><?php echo $kur['alis']; ?> TL</td>
<td><?php echo $kur['satis']; ?> TL</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<p><small>Veriler TCMB üzerinden anlık olarak çekilmektedir.</small></p>

Dikkat Edilmesi Gereken İpuçları​



  • [] Önbellekleme (Caching): TCMB verileri günde bir kez (hafta sonları hariç) güncellenir. Sayfa her yüklendiğinde XML çekmek sunucunuzu yorabilir. Verileri bir JSON dosyasına veya Database'e kaydedip 1 saatte bir güncellemek daha profesyoneldir.
    [] İndis Numaraları: XML dosyasında para birimlerinin sırası sabittir. Örneğin $xml->Currency[0] her zaman USD'dir. Ancak garantiye almak için bir foreach döngüsü ile CurrencyCode niteliğini (attribute) kontrol edebilirsiniz.
  • Hata Yönetimi: @simplexml_load_file başındaki @ işareti, XML dosyasına ulaşılamadığında PHP'nin hata basmasını engeller. Bunun yerine if($xml === false) kontrolü ile kendi hata mesajınızı verebilirsiniz.

Kur Dönüştürücü (Örnek Mantık)​


Eğer sitenizde "100 Dolar Kaç TL?" gibi bir hesaplama yapmak isterseniz şu mantığı kullanabilirsiniz:

PHP:
$miktar = 100;
$dolar_kuru = (float)$veriler['USD']['alis'];
$toplam_tl = $miktar * $dolar_kuru;

echo "$miktar Dolar = " . number_format($toplam_tl, 2) . " TL etmektedir.";

Sonuç​


TCMB entegrasyonu, PHP'nin XML işleme yeteneklerini gerçek bir senaryoda kullanmak için mükemmel bir örnektir. Bu yöntemle sadece döviz kurlarını değil, XML formatında yayın yapan tüm haber sitelerini (RSS) veya diğer kamu kurumlarının verilerini de projenize dahil edebilirsiniz.
 
Geri
Üst