
Bu makalede sizlere PHP ile RegEx kullanarak Yahoo'dan hava durumu bilgilerini almayi gosterecegim. onceki makalemde anlatmis oldugum doviz bilgilerinin aksine hava durumu bilgisi surekli guncellenen bir bilgi oldugundan bu tarz verileri veritabaninda depolamanizi tavsiye etmem.Artik kodumuza gecelim.
function HavaDurumu($sehirkodu,$kucukresim=false) {
$sonuc=array();
$contents=file_get_contents("http://weather.yahoo.com/forecast/".$sehirkodu."_c.html");
$pattern='/<dt>Feels Like:</dt><dd>(d+)°</dd>/';
preg_match($pattern, $contents, $matches);
$sonuc[hissedilen]=$matches[1]." °C";
unset($matches);
$pattern='/<dt>Barometer:</dt><dd>(d+)(sw+)([sw]+)</dd>/';
preg_match($pattern, $contents, $matches);
$sonuc[basinc]=$matches[1].$matches[2];
unset($matches);
$pattern='/<dt>Humidity:</dt><dd>(d+)\%</dd>/';
preg_match($pattern, $contents, $matches);
$sonuc[nem]="%".$matches[1];
unset($matches);
$pattern='/<div class="forecast-icon" style="background:url('(.+?)');/';
preg_match($pattern, $contents, $matches);
if($kucukresim == false) { $sonuc[image]=$matches[1]; } else { $sonuc[image]=substr($matches[1],0,-5)."s.png"; }
unset($matches);
$pattern='/<div class="forecast-temp">s*<h3>(d+)°</h3>s*<p>High:s(d+)°sLow:s(d+)°</p>/';
preg_match($pattern, $contents, $matches);
$sonuc[sicaklik]=$matches[1]." °C";
$sonuc[max]=$matches[2]." °C";
$sonuc[min]=$matches[3]." °C";
unset($matches);
return $sonuc;
}
ornek kullanim:
$izmir=HavaDurumu("TUXX0015",true); //kucuk resim isteniyorsa
$izmir=HavaDurumu("TUXX0015",false); //buyuk resim
$izmir=HavaDurumu("TUXX0015"); //buyuk resim
Daha sonra $izmir degiskenine atanan veriler $izmir[sicaklik] $izmir[max] $izmir[min] $izmir[image] gibi kullanilabilir.
Kod icinde gecen sehir kodu kismini ogrenmek icin [link:http://weather.yahoo.com/Turkey/TUXX/regional.html]buraya
tiklayarak acilan siteden istediginiz sehre girin. Adres satirinda goreceginiz TUXX0015 benzeri kisim sehir kodudur onu kopyalayip yerine koyarsaniz istediginiz sehrin bilgisini alabilirsiniz.
Guncelleme - 07.10.2009:
Kodlarin duzgun versiyonunu incelemek icin [link: http://www.sansursuz.biz/phpmakalekod/havadurumu.phps]tiklayiniz.