21 AĞUSTOS 2017
PAZARTESİ
12.25
PHP Hava Durumu Botu

Bu makalemizde PHP ile hava durumu botu hazırlamayı göreceğiz. Bot ile temel veriler olan bugünün kaç derece olduğu, havanın durumu, hissedilen sıcaklığı ve hangi saate ait veriler olduğunu göstereceğiz. Botu çok temel anlamda hazırladım ki istediğiniz gibi geliştirebilesiniz.

 

Hava durumu verilerini weather.com sitesinden alacağız.

1. Adım: Baglan() Fonksiyonumuz

Bu fonksiyonumuz bir web sitesine bağlanarak verileri çekmemize yardımcı olmaktadır.

function Baglan($url)
{
	$curl = curl_init();
	curl_setopt($curl, CURLOPT_URL, $url);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);
	$cikti = curl_exec($curl);
	curl_close($curl);
	return $cikti;
}

2. Adım: İl Kodu

Verileri alacağımız web sitesine bağlanırken kullanacağımız bir şehir kodu vardır. Bu şehir kodlarına buraya tıklayarak ulaşabilirsiniz.

  • Ankara: TUXX0002
  • İstanbul: TUXX0014
  • İzmir: TUXX0015
  • Bursa: TUXX0039
  • Eskişehir: TUXX0040
  • ...

Kod yapımızda ise bir $il değişkeni oluşturup kodu tanımlamalıyız;

$il = "TUXX0014";

3. Adım: Verileri Çekmek

Verileri temel halde çekmek için bu kodu kullanacağız;

$baglan = Baglan("https://weather.com/tr-TR/kisisel/bugun/l/".$il.":1:TU");
preg_match_all('#<p class="today_nowcard-timestamp">(.*?)</p>#si', $baglan, $saat);
preg_match_all('#<div class="today_nowcard-temp">(.*?)</div>#si', $baglan, $bugun);
preg_match_all('#<div class="today_nowcard-phrase">(.*?)</div>#si', $baglan, $durum);
preg_match_all('#<span class="deg-feels" className="deg-feels">(.*?)</span>#si', $baglan, $hissedilen);

4. Adım: Verileri İşlemek

Gelen verileri doğru değişkenlere ve doğru halleri ile aktarmak için kullanacağız;

$saat = explode(":", strip_tags($saat[0][0]));
$saat = substr($saat[0], -2).":".substr($saat[1], 0, 2);
$derece = intval(strip_tags($bugun[0][0]))."°";
$durum = strip_tags($durum[0][0]);
$hissedilen = intval(strip_tags($hissedilen[0][0]))."°";

Burada derece (°) ifadeleri bulunan $derece ve $hissedilen değişkenlerini intval içerisine almamın sebebi sizin onları derece (°) ifadesi eklemeden de kullanmak isteyebileceğiniz içindir. Yani bu kodda bu iki değişkenin sonuna ekstra olarak eklediğim derece (°) simgelerini çıkartırsanız sadece rakam olarak gelecektir.

Bundan sonraki aşama tamamen görüntü aşamasıdır. Artık verileri $saat, $derece, $durum ve $hissedilen olarak istediğiniz alana yazdırabilirsiniz.

Uygulama Demosu Uygulamanın Dökümanlarını İndir
YORUMLAR 0
Bu konuya henüz kimse yorum yapmadı.
İlk yorumu sen yapmak ister misin?
YORUM BIRAK
Şuanda bu yoruma cevap yazıyorsunuz:
İptal Et