PHP ile başka sitelerden veri çekmek
4 yıl önce#makalelerHerkesin mutlaka işine yaracağı bir işlem. Bazen küçük detayları sitenize çekmeniz gerekebilir. Bu bir hava durumu olabilir, döviz kuru olabilir. Bu işlem sayesinde dilediğiniz birçok siteden istediniz kısmı verisel olarak çekebilirsiniz.
Ben örneklemeyi doviz.com üzerinden gerçekleştireceğim. Sitenin header kısmında yer alan birkaç döviz kurunun verisini sistemimize çekeceğiz.
<?php
function uzaktan_veri($baslat, $son, $cekilecek_veri)
{
@preg_match_all('/' . preg_quote($baslat, '/') .
'(.*?)'. preg_quote($son, '/').'/i', $cekilecek_veri, $m);
return @$m[1];
}
$hedef_site = "https://www.doviz.com/";
$veri = file_get_contents($hedef_site);
$veri_adi = uzaktan_veri('<span class="menu-row2">','</span>',$veri);
?>
Değişkenimiz yukarıdaki gibi. Önemli kısım ise $hedef_site değerinin karşılığına yazacağımız site ve $veri_adi aralığına gireceğimiz div kısmı. Hedef sitemiz olan doviz.com üzerinden baz aldığım örnekte, header kısmında yer alan kur değerleri <span class="menu-row2">içerik</span> aralığında yer aldığı için $veri_adi fonksiyonuna bu span aralığını uyarladık.
Şimdi yapacağımız işlem ise çektiğimiz verileri sitemiz üzerinde göstermek. Kodumuz aşağıdaki gibi.
<?php echo "
<a class='kur'><b>Altın</b> " . $veri_adi[0] . "</a>
<a class='kur'><b class='buyukluk'>$</b> " . $veri_adi[1] . "</a>
<a class='kur'><b class='buyukluk'>€</b> " . $veri_adi[2] . "</a>
"; ?>
Burada dikkat etmemiz gereken olay $veri_adi[0] değerinin sonundaki 0 sayısının önemi. Eğer sonu 0 olursa ayarladığımız span dizininden aynı olanlar arasında ilkini çekecektir, 0 yerine 1 değerini verirsek ilkini değil bir sonrakini çekecektir. Bu işlem bu şekilde devam etmekte. Ben 0-1-2 olarak ayarladım. İlk veri doviz.com headerında sırasıyla bulunan altın, dolar ve euro şeklinde çekiyor.