Weather

turha 05.03.02 17:14

Hakee haluamasi kaupungin säätiedot ilmatieteenlaitoksen sivuilta

 Tekstiversio  Arvo: 1 (9 ääntä)  Äänestä: +  -
Eli siis idea on apinoitu ihan suoraan "Ulkoilman lämpötila" skriptistä ja oikeastaan vain jatkettu sitä...


----------- weather.inc.php -------------

<?php
        function get_weather_info($kunta) {
                $raw = @file("http://www.fmi.fi/saa/paikalli.html?kunta=$kunta");
                if (!$raw) die("Virhe!");
                $data = join("", $raw);
                $data = strip_tags($data);
                preg_match("/([0-9. ]{10}) ([0-9:]{5})/", $data, $regs);
                $w["aika"] = $regs[0];
                $w["paikka"] = $kunta;
                preg_match("/lämpötila[ ]*[&nbsp;]*[0-9.-]+/", $data, $regs);
                preg_match("/[0-9.-]+/", $regs[0], $regs2);
                $w["lampotila"] = $regs2[0];
                preg_match("/paine[ ]*[&nbsp;]*([0-9.]{5,6})/", $data, $regs);
                preg_match("/([0-9.]{5,6})/", $regs[0], $regs2);
                $w["ilmanpaine"] = $regs2[0];
         preg_match("/kosteus[ ]*[&nbsp;]*([0-9.]{2,3})/", $data, $regs);
                preg_match("/([0-9.]{2,3})/", $regs[0], $regs2);
                $w["kosteus"] = $regs2[0];
                if (strstr($data, "länsituulta")) {
                        preg_match("/länsituulta[ ]*[&nbsp;]*([0-9.]{3,4})/", $data, $regs);
                        preg_match("/([0-9.]{3,4})/", $regs[0], $regs2);
                        $w["tuuli"] = "Länsituulta " . $regs2[0] . " m/s";
                }
                if (strstr($data, "itätuulta")) {
                        preg_match("/itätuulta[ ]*[&nbsp;]*([0-9.]{3,4})/", $data, $regs);
                        preg_match("/([0-9.]{3,4})/", $regs[0], $regs2);
                        $w["tuuli"] = "Itätuulta " . $regs2[0] . " m/s";
                } else
                if (strstr($data, "etelätuulta")) {
                        preg_match("/etelätuulta[ ]*[&nbsp;]*([0-9.]{3,4})/", $data, $regs);
                        preg_match("/([0-9.]{3,4})/", $regs[0], $regs2);
                        $w["tuuli"] = "Etelätuulta " . $regs2[0] . " m/s";
                } else
                if (strstr($data, "pohjoistuulta")) {
                        preg_match("/pohjoistuulta[ ]*[&nbsp;]*([0-9.]{3,4})/", $data, $regs);
                        preg_match("/([0-9.]{3,4})/", $regs[0], $regs2);
                        $w["tuuli"] = "Pohjoistuulta " . $regs2[0] . " m/s";
                } else
                if (strstr($data, "lounaistuulta")) {
                        preg_match("/lounaistuulta[ ]*[&nbsp;]*([0-9.]{3,4})/", $data, $regs);
                        preg_match("/([0-9.]{3,4})/", $regs[0], $regs2);
                        $w["tuuli"] = "Lounaistuulta " . $regs2[0] . " m/s";
                } else
                if (strstr($data, "koillistuulta")) {
                        preg_match("/koillistuulta[ ]*[&nbsp;]*([0-9.]{3,4})/", $data, $regs);
                        preg_match("/([0-9.]{3,4})/", $regs[0], $regs2);
                        $w["tuuli"] = "Koillistuulta " . $regs2[0] . " m/s";
                } else
                if (strstr($data, "kaakkoistuulta")) {
                        preg_match("/kaakkoistuulta[ ]*[&nbsp;]*([0-9.]{3,4})/", $data, $regs);
                        preg_match("/([0-9.]{3,4})/", $regs[0], $regs2);
                        $w["tuuli"] = "Kaakkoistuulta " . $regs2[0] . " m/s";
                } else
                if (strstr($data, "luoteistuulta")) {
                        preg_match("/luoteistuulta[ ]*[&nbsp;]*([0-9.]{3,4})/", $data, $regs);
                        preg_match("/([0-9.]{3,4})/", $regs[0], $regs2);
                        $w["tuuli"] = "Luoteistuulta " . $regs2[0] . " m/s";
                }
                preg_match("/sademäärä[ ]*[&nbsp;]*([0-9.]{2,3})/", $data, $regs);
                preg_match("/([0-9.]{2,3})/", $regs[0], $regs2);
                $w["sademaara"] = $regs2[0];
                preg_match("/\(([0-9]{1,2})[ ]*[&nbsp;]*h[ ]*[&nbsp;]*kertymä\)/", $data, $regs);
                preg_match("/([0-9]{1,2})/", $regs[0], $regs2);
                $w["sade_kertyma"] = $regs2[0];
                preg_match("/pilvisyys[ ]*[&nbsp;]*([0-9\/]{2,3})/", $data, $regs);
                preg_match("/([0-9\/]{2,3})/", $regs[0], $regs2);
                $w["pilvisyys"] = $regs2[0];
                return $w;
        }
?>

----------------- EOF ------------------



Seuraavana on itse weather.php joka näyttää tiedot yksinkertaisessa taulukossa.

------------- weather.php --------------

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Säätila</title>
</head>
<body bgcolor="#ffffff" text="#000000">
<?php
        if (!isset($location)) $location = "Helsinki";
        include("weather.inc.php");
        $w = get_weather_info($location);
        print "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"500\">\n";
        if (isset($w["aika"])) print "<tr><td width=\"50%\">Aika</td><td width=\"50%\">" . $w["aika"] . "</td></tr>\n ";
        if (isset($w["paikka"])) print "<tr><td>Paikka</td><td>" . $w["paikka"] . "</td></tr>\n ";
        if (isset($w["lampotila"])) print "<tr><td>Lämpötila</td><td>" . $w["lampotila"] . " &deg;C</td></tr>\n ";
        if (isset($w["ilmanpaine"])) print "<tr><td>Ilmanpaine</td><td>" . $w["ilmanpaine"] . " hPa</td></tr>\n ";
        if (isset($w["kosteus"])) print "<tr><td>Kosteus</td><td>" . $w["kosteus"] . "%</td></tr>\n ";
        if (isset($w["tuuli"])) print "<tr><td>Tuuli</td><td>" . $w["tuuli"] . "</td></tr>\n ";
        if (isset($w["sademaara"]) && isset($w["sade_kertyma"])) print "<tr><td>Sademäärä / " . $w["sade_kertyma"] . " h</td><td>" . $w["sademaara"] . " mm</td></tr>\n ";
        if (isset($w["pilvisyys"])) print "<tr><td>Pilvisyys</td><td>" . $w["pilvisyys"] . "</td></tr>\n ";
        print "</table>\n";
        print "<br>\n<br>\n";
        print "<form method=\"post\" action=\"$PHP_SELF\">\n";
        print "<select name=\"location\">\n";
        print "<option value=\"Helsinki\">Helsinki</option>\n";
        print "<option value=\"Hämeenlinna\">Hämeenlinna</option>\n";
        print "<option value=\"Ivalo\">Ivalo</option>\n";
        print "<option value=\"Joensuu\">Joensuu</option>\n";
        print "<option value=\"Jokioinen\">Jokioinen</option>\n";
        print "<option value=\"Jyväskylä\">Jyväskylä</option>\n";
        print "<option value=\"Kajaani\">Kajaani</option>\n";
        print "<option value=\"Kilpisjärvi\">Kilpisjärvi</option>\n";
        print "<option value=\"Kittilä\">Kittilä</option>\n";
        print "<option value=\"Kokkola\">Kokkola</option>\n";
        print "<option value=\"Kotka\">Kotka</option>\n";
        print "<option value=\"Kouvola\">Kouvola</option>\n";
        print "<option value=\"Kristiinankaupunki\">Kristiinankaupunki</option>\n";
        print "<option value=\"Kuopio\">Kuopio</option>\n";
        print "<option value=\"Kuusamo\">Kuusamo</option>\n";
        print "<option value=\"Lahti\">Lahti</option>\n";
        print "<option value=\"Lappeenranta\">Lappeenranta</option>\n";
        print "<option value=\"Maarianhamina\">Maarianhamina</option>\n";
        print "<option value=\"Mikkeli\">Mikkeli</option>\n";
        print "<option value=\"Muonio\">Muonio</option>\n";
        print "<option value=\"Nivala\">Nivala</option>\n";
        print "<option value=\"Nurmes\">Nurmes</option>\n";
        print "<option value=\"Oulu\">Oulu</option>\n";
        print "<option value=\"Pietarsaari\">Pietarsaari</option>\n";
        print "<option value=\"Pori\">Pori</option>\n";
        print "<option value=\"Porvoo\">Porvoo</option>\n";
        print "<option value=\"Rovaniemi\">Rovaniemi</option>\n";
        print "<option value=\"Saariselkä\">Saariselkä</option>\n";
        print "<option value=\"Savonlinna\">Savonlinna</option>\n";
        print "<option value=\"Seinäjoki\">Seinäjoki</option>\n";
        print "<option value=\"Sodankylä\">Sodankylä</option>\n";
        print "<option value=\"Tammisaari\">Tammisaari</option>\n";
        print "<option value=\"Tampere\">Tampere</option>\n";
        print "<option value=\"Tornio\">Tornio</option>\n";
        print "<option value=\"Turku\">Turku</option>\n";
        print "<option value=\"Utsjoki\">Utsjoki</option>\n";
        print "<option value=\"Uusikaupunki\">Uusikaupunki</option>\n";
        print "<option value=\"Vaasa\">Vaasa</option>\n";
        print "<option value=\"Vantaa\">Vantaa</option>\n";
        print "<option value=\"Varkaus\">Varkaus</option>\n";
        print "<option value=\"Ähtäri\">Ähtäri</option>\n";
        print "</select>\n";
        print "<input type=\"submit\" value=\"Valitse\">\n";
        print "</form>\n";
?>
<p><a href="http://validator.w3.org/check/referer">
<img border="0" src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" height="31" width="88">
</a></p>
</body>
</html>

--------------- EOF ---------------
 

JoneZi 11:28 3.1.03 
Toi on muuten aika kätevä :D

Ti_Mo85 09:37 27.1.03 
onko jossain demoa?
pellari 11:24 24.5.03 
Toimii. Ei tee ihmeitä, mutta toimii.
empty 23:55 8.6.03 
aaagh, hirveää printtaamista!
eikö olisi ollut "vähän kätevämpää" yksinkertaisesti
?>
<option blaablaa>blaa</option>
<option blaablaa2>blaa2</option>
<?php
--->

... mutta kyllä se toimii.
proton 19:10 24.9.03 
tokihan olisi ollut käytännöllisempää tehdä array noista paikkakunnista ja ajaa ne nätisti koodin läpi, jos tuosta vähän leikkaisi ja liimaisi ;-) Elikä seuraava koodinpätkä noiden n-määrän "option"-print-rivejä tilalle;

$pknimet=array('Helsinki', 'Hämeenlinna', 'Ivalo', 'Joensuu', 'Jokioinen', 'Jyväskylä', 'Kajaani', 'Kilpisjärvi', 'Kittilä', 'Kokkola', 'Kotka', 'Kouvola', 'Kristiinankaupunki', 'Kuopio', 'Kuusamo', 'Lahti', 'Lappeenranta', 'Maarianhamina', 'Mikkeli', 'Muonio', 'Nivala', 'Nurmes', 'Oulu', 'Pietarsaari', 'Pori', 'Porvoo', 'Rovaniemi', 'Saariselkä', 'Savonlinna', 'Seinäjoki', 'Sodankylä', 'Tammisaari', 'Tampere', 'Tornio', 'Turku', 'Utsjoki', 'Uusikaupunki', 'Vaasa', 'Vantaa', 'Varkaus', 'Ähtäri');
foreach ($pknimet as $pknimi) {
echo "<option value=\"$pknimi\">$pknimi</option>\n";
}
jussikilp 21:55 9.6.04 
Tosi hyvä ja kätevä. jos joku haluaa demona niin osoite on http://koti.mbnet.fi/minigrip/php/weather.php . Sivua on muokattu vain taustan osalta. Hienoa jälkeä tekijältä. Onnittelen!!!
jonisweb 18:43 24.4.05 
Jee aivan mahtava scripti tollasta olin etsinytkin :P
VhtrMrk 13:07 13.10.05 
Muuten tulostuu oikein mutta seuraavat varoitukset tulee näytölle. Kuinka niistä pääsee eroon?

Warning: main(weather.inc.php): failed to open stream: No such file or directory in /mbnet/?/kotisivu/koesivu.php on line 83

Warning: main(weather.inc.php): failed to open stream: No such file or directory in /mbnet/?/kotisivu/koesivu.php on line 83

Warning: main(): Failed opening 'weather.inc.php' for inclusion (include_path='.:/php/includes:/usr/share/php') in /mbnet/?/kotisivu/koesivu.php on line 83