Neler Öğreneceğim?
- Kaynağa erişim
- Veri Parçalama
Gereksinimler
- PHP
Zorluk Derecesi
- Intermediate
İçerik
Merhaba arkadaşlar ben Seyda Bozkurt yaklaşık 3-4 yıldır php ile uğraşıyorum ve sürekli bir şeyler üretmeye çalışıyorum bu gün sizlerle php bilen birinin kesinlikle öğrenmesi gereken ve kesinlikle işine yarayacak olan bir şeyi anlatacağım. uzak sunucudan veri çekme. peki bu uzak sunucudan veri çekme nedir ne işe yarar? hava durumu, saat bilgileri, borsa ve aklınıza gelebilecek bir çok sabit ve değişken veriyi sitenizde yer almasını sağlaya bilirsiniz. dikkatli olun ama zahmetli ve çaba gösterilmiş içeriklerin sitenize çekmeniz yasal değildir ve kaynak belirtmeniz gerekir. bir nevi bu bir bot yapımı başka bir siteden bilgileri sitenize çekebilirsiniz hatta sitenize kayıt bile edebilirsiniz.
ilk olarak kaynağa nasıl erişecez onunla başlayalım . uzak sunucudan veri almak için PHP çekirdek fonksiyonu olan file_get_contents() den faydalanacağız. bu fonksiyon bir den çok işe yarasada bizler genellikle veri çekme için kullanıyoruz. fonksiyonda belirtilen URL ye erişip sadece HTML bilgileri döndürür. aşağıdaki örnek kodda www.mgm.gov.tr sayfası üzerinden SAKARYA ili için günlük hava tahmin sonuçları bulunuyor.
<?php
header('content-type:text/html;charset=utf-8');
$url = 'https://www.mgm.gov.tr/tahmin/il-ve-ilceler.aspx?m=SAKARYA#/';
$kaynak = file_get_contents($url);
highlight_string($kaynak);
?>
bu örnekte $url değişkenine erişip HTML kodlarını $kaynak adlı değişkene yüklüyo ve daha sonra ekran görüntüsü almak içinde highlight_string() kullanılıyor.
İstediğimiz bilgiyi elde etme ve parçalama yapacağız şimdi peki bu işlemleri nasıl yapacağız?
iki şekilde parçalaya biliriz ilki explode() veya split() bunlar aynı görev için kullanılır.
<?php
$metin = "1,2,3,4,5";
$cikti = explode(",", $metin);
echo "<pre>";
print_r($cikti);
echo "</pre>";
?>
aşağıdaki görselde kodların çıktısını görüyorsunuz yukarı kodlar tek tek ayrılıp yeni bir listeye atılıyor. yukarıda kodları beraber inceleyelim. ilk önce metin diye bir string belirlemiş ve 1den 5 e kadar arasına virgül koyarak yazdık. ikinci satırda iste metin değişkenini explode ile parçaladık. ilk parametreye bakarsanız "," (virgül) parametresi ile parçalanıyor bu şekilde de hepsi yeni bir listeye atıyor. üçüncü satırda ise < pre> ile ayrıştırıcı yazdırma işlemi başlıyor üçüncü satırda ayrıştırılmış şekilde yazılıyor ve 4. satırda ayrıştırıcı yazdırma kapatılıyor.
örnek uygulama ile pekiştirelim.
<?php header('content-type:text/html;charset=utf-8'); $url = 'http://www.namazvakti.com/Main.php?cityID=16703'; $kaynak = file_get_contents($url); $imsakhtml = explode('', $kaynak); $imsaksaat = explode(' ' ,$imsakhtml[1]); $oglehtml = explode('', $kaynak); $oglesaat = explode(' ' ,$oglehtml[1]); $ikindihtml = explode('', $kaynak); $ikindisaat = explode(' ' ,$ikindihtml[1]); $aksamhtml = explode('', $kaynak); $aksamsaat = explode(' ' ,$aksamhtml[1]); $yatsihtml = explode('', $kaynak); $yatsisaat = explode(' ' ,$yatsihtml[1]); echo 'imsak : '.$imsaksaat[0]. ''; echo 'ogle : '.$oglesaat[0]. ''; echo 'ikindi : '.$ikindisaat[0].''; echo 'aksam : '.$aksamsaat[0].''; echo 'yatsi : '.$yatsisaat[0].''; ?>
evet arkadaşlar burada namaz vakitleri ile alakalı bir proje yaptık. bu proje kodlarını incelerseniz gayet açık bir şekilde mantığı var ilk olarak namazvakti.com adlı siteden şehrini seçtiğimiz konumun namaz vakitlerini erişe biliyoruz ben örnek olarak sakarya yaptım. daha sonra ise explode ile < td> nin içindeki belirli parametreleri (imsak,ogle,ikindi,aksam,yatsi) olarak bölüyorum. birinci explode de 1 diziyi çekiyorum ve yeni değişkene atıyorum yazdırırkende o değişkenin 0. dizesini çekip yazdırıyorum ve orada bize saat i vermiş oluyor. gayet güzel bir uygulama olduğunu düşünüyorum kolay bir şekilde anlaya bileceğinizi ümit ediyorum aşağıda da bütün örneklerin kodlarını github dan paylaşıyorum linki bıraktım aşağıya :) iyi günler
Github - https://github.com/kansiper/Php-ile-Uzaktan-Veri-Cekme-Ornekleri
Posted on Utopian.io - Rewarding Open Source Contributors