Weather forecast for Oslo

yr_GetChildren($vals, $i)); } else $children[$vals[$i]['tag']][] = $this->yr_GetChildren($vals, $i); break; case 'close': return $children; } } } function yr_GetXMLTree($xmlloc, $max_age, $yr_meth){ $yr_cached = "data/yrrss.txt"; $yr_getnew=1; if(file_exists($yr_cached)){ $currenttime=time(); $mod_time=filemtime($yr_cached); if(($currenttime-$mod_time)<$max_age)$yr_getnew=0; } if(!$yr_getnew)$data = implode('', file($yr_cached)); else{ $xmlloc.="/varsel.xml"; // fopen or curl? if($yr_meth)$fp = fopen($xmlloc, 'r'); else{ $ch = curl_init($xmlloc); $fp = @fopen("data/temp.xml", "w"); curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_HEADER, 0); curl_exec($ch); curl_close($ch); fclose($fp); $file = "data/temp.xml"; $fp = fopen($file, "r"); } $data=''; while(!feof($fp))$data = $data . fread($fp, 1024); fclose($fp); $fh = fopen($yr_cached, 'w') or die("can't open file"); fwrite($fh, $data); fclose($fh); } $parser = xml_parser_create('ISO-8859-1'); xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1); xml_parse_into_struct($parser, $data, $vals, $index); xml_parser_free($parser); $tree = array(); $i = 0; if (isset($vals[$i]['attributes'])) { $tree[$vals[$i]['tag']][]['ATTRIBUTES']=$vals[$i]['attributes']; $index=count($tree[$vals[$i]['tag']])-1; $tree[$vals[$i]['tag']][$index]=array_merge($tree[$vals[$i]['tag']][$index], $this->yr_GetChildren($vals, $i)); } else $tree[$vals[$i]['tag']][] = $this->yr_GetChildren($vals, $i); return $tree; } } function yr_convert_encoding($yrraw, $yrtype=0){ if(!$yrtype){ $conv=str_replace("æ", "æ", $yrraw); $conv=str_replace("ø", "ø", $conv); $conv=str_replace("Ã¥", "å", $conv); $conv=str_replace("Æ", "Æ", $conv); $conv=str_replace("Ø", "Ø", $conv); $conv=str_replace("Ã…", "Å", $conv); }else{ $conv=str_replace("æ", "æ", $yrraw); $conv=str_replace("ø", "ø", $conv); $conv=str_replace("å", "å", $conv); $conv=str_replace("Æ", "Æ", $conv); $conv=str_replace("Ø", "Ø", $conv); $conv=str_replace("Å", "Å", $conv); } return $conv; } function yr_parsetime($yr_time, $do24_00=0){ $yr_time=str_replace(":00:00", "", $yr_time); if($do24_00)$yr_time=str_replace("00", "24", $yr_time); return $yr_time; } // ##################### SKRIPTET KJØRER ############################# if($yr_showerrors)error_reporting(E_ALL); $yr_run=1; if(!$yr_meth){// check for curl, if not present, die. if(!function_exists(curl_init))$yr_run=0; } if($getextheadfoot){ // external header // f eks: include 'header.php'; } // external header end elseif($getlocalheadfoot){ // local header echo "

\n" ."\n\n" ."\n" ."\n\n" ."\n" ."\n\n"; } // local header end // så begynner vi å hente/behandle varsel, HVIS serveren støtter det. if($yr_run){ $yr_name=yr_convert_encoding($yr_name); $yr_xmlparse = &new yr_ParseXML; $yr_xml = $yr_xmlparse->yr_GetXMLTree($yr_url, $yr_maxage, $yr_meth); $yr_xml_sub=$yr_xml['WEATHERDATA'][0]['FORECAST'][0]; // headerfelt // Du må ta med teksten nedenfor og ha med lenke til yr.no. // Om du fjerner denne teksten og lenkene, bryter du vilkårene for bruk av data fra yr.no. // Det er straffbart å bruke data fra yr.no i strid med vilkårene. // Du finner vilkårene på http://www.yr.no/verdata/1.3316805 $yrrss_acc="

\n\n" ."

" ."\"yr.no\"" ."

\n" ."

Værvarsel for ".$yr_name."

\n" ."

Værvarsel fra yr.no, levert av Meteorologisk institutt og NRK.

\n"; // tekstvær if(isset($yr_xml_sub['TEXT'])){ $yr_place=$yr_xml_sub['TEXT'][0]['LOCATION'][0]['ATTRIBUTES']['NAME']; foreach($yr_xml_sub['TEXT'][0]['LOCATION'][0]['TIME'] as $yr_var2){ $yrrss_acc.="

".$yr_place." ".strtolower(yr_convert_encoding($yr_var2['TITLE'][0]['VALUE'])).": " // UKEDAGER .yr_convert_encoding($yr_var2['BODY'][0]['VALUE'])."

\n"; // VÆRMELDING } } // lenker til andre varsel $yrrss_acc.="

".$yr_name." på yr.no:\n" ."Varsel med kart\n" ."Time for time\n" ."Helg\n" ."Langtidsvarsel\n

\n" // kolonnetitler ."\n \n\n \n" ."\n" ."\n\n\n\n" ." \n\n \n"; // så legges dataene ut i ruter. html lagres i variablen $yrrss_acc $thisdate=''; $dayctr=0; foreach($yr_xml_sub['TABULAR'][0]['TIME'] as $yr_var3){ list($fromdate, $fromtime)=explode('T', $yr_var3['ATTRIBUTES']['FROM']); list($todate, $totime)=explode('T', $yr_var3['ATTRIBUTES']['TO']); $fromtime=yr_parsetime($fromtime); $totime=yr_parsetime($totime, 1); if($fromdate!=$thisdate){ $divider=" \n \n \n"; list($thisyear, $thismonth, $thisdate)=explode('-', $fromdate); $displaydate=$thisdate.".".$thismonth.".".$thisyear; $firstcellcont=$displaydate; $thisdate=$fromdate; ++$dayctr; }else $divider=$firstcellcont=''; // change date display if($dayctr<7){ $yrrss_acc.=$divider; // behandle symbol $imgno=$yr_var3['SYMBOL'][0]['ATTRIBUTES']['NUMBER']; if($imgno<10)$imgno='0'.$imgno; switch($imgno){ case '01': case '02': case '03': case '05': case '06': case '07': case '08': $imgno.="d"; $do_daynight=1; break; default: $do_daynight=0; } // behandle regn $rain=$yr_var3['PRECIPITATION'][0]['ATTRIBUTES']['VALUE']; if($rain==0.0)$rain="0"; else{ $rain=intval($rain); if($rain<1)$rain='<1'; else $rain=round($rain); } $rain.=" mm"; // behandle vind $winddir=round($yr_var3['WINDDIRECTION'][0]['ATTRIBUTES']['DEG']/22.5); $winddirtext=$yr_winddirs[$winddir]; // behandle temperatur $temper=round($yr_var3['TEMPERATURE'][0]['ATTRIBUTES']['VALUE']); if($temper>=0)$tempclass='pluss'; else $tempclass='minus'; // så legger vi ut hele den ferdige linjen $yrrss_acc.=" \n\n" ."\n" // start/sluttid ." \n" // symbol ." \n" // nedbør ." \n" // temperatur ." \n" // vindtype ." \n \n"; } } $yrrss_acc.=" \n \n \n \n
Varsel for ".$yr_name."NedbørTemp.VindVindstyrke
 
".$firstcellcont."".$fromtime."–".$totime."\"".$yr_var3['SYMBOL'][0]['ATTRIBUTES']['NAME']."\"".$rain."".$temper."°".$yr_var3['WINDSPEED'][0]['ATTRIBUTES']['NAME']." fra ".$winddirtext."".round($yr_var3['WINDSPEED'][0]['ATTRIBUTES']['MPS'])." m/s" // vindhastighet, ms ."
 
\n" ."

Værsymbolet og nedbørsvarselet gjelder for hele perioden, temperatur- og vindvarselet er for det første tidspunktet. <1 mm betyr at det vil komme mellom 0,1 og 0,9 mm nedbør.
" ."Slik forstår du varslene fra yr.no.

\n" ."

Vil du også ha værvarsel fra yr.no på dine nettsider?

\n" ."

\n"; }else $yrrss_acc='Vi beklager, men PHP-varselet fra yr ser ikke ut til å fungere på denne serveren.'; $yrrss_acc=yr_convert_encoding($yrrss_acc, 1); echo $yrrss_acc; // $yrrss_acc echoes ut if($getextheadfoot){ // external footer // f eks: include 'footer.php'; } // local footer end elseif($getlocalheadfoot) // local footer echo "\n"; // local footer end // Sjekk om katalogen skal fjernes eller ei: if ($clean_datadir) { unlink($datadir . '/yrrss.txt'); rmdir($datadir); } ?>