1) { $ulkovirta = preg_replace("/\s+/","",$_GET['ulkovirta']); if (!preg_match("/^http:\/\//", $ulkovirta)) $ulkovirta = "http://".$ulkovirta; if (!preg_match("/^http:\/\//", $ulkovirta)) $ulkovirta = "http://".$ulkovirta; if (@implode("", @file($ulkovirta))) $RSS_lahde = $ulkovirta; else { $RSS_lahde = "hip"; $vikailmo = "Antamasi osoite ei ollut kelvollinen"; } } // Listalta valittu else if ($_GET['virta'] && $_GET['virta'] != "hip") { switch ($_GET['virta']) { case 1: $RSS_lahde = "http://www.tampere.fi/rss/tiedotteet.xml"; break; case 2: $RSS_lahde = "http://www.tampere.fi/rss/ilmoitukset.xml"; break; case 3: $RSS_lahde = "http://www.tampere.fi/rss/kuulutukset.xml"; break; case 4: $RSS_lahde = "http://www.tampere.fi/rss/tyopaikat.xml"; break; case 5: $RSS_lahde = "http://inter2.tampere.fi/osallistu/keskustelu/rss/index.php"; break; case 6: $RSS_lahde = "http://inter2.tampere.fi/osallistu/tapahtumakalenteri/rss/"; break; case 7: $RSS_lahde = "http://inter2.tampere.fi/osallistu/tapahtumakalenteri/rss/viikko"; break; case 8: $RSS_lahde = "http://www.tampereenkaupunki.com/rss/uimavedet/index.php"; break; case 9: $RSS_lahde = "http://www.tampereenkaupunki.com/rss/vesi/index.php"; break; } } else { $RSS_lahde = "hip"; } // Ei jatketa, jos lähdettä ei ole valittu if ($RSS_lahde != "hip") { // TILAPÄISTIEDOSTON LUOMINEN ALKAA // Tarkistetaan onko lähde tallennettu levylle, jos ei ole, niin tallennetaan // Nimetään tiedosto osoitteen mukaan base64:lla, tallennuskansio tässä nykyinen, // muista loppuun / -merkki jos muutat. Muista myös kansion oikeudet. // Tarkistusväli minuuttia. $RSS_lahde_alku = $RSS_lahde; $RSS_file = base64_encode($RSS_lahde).".xml"; $RSS_file_kansio = ""; $RSS_file_tarkistusvali = "15"; $RSS_file_uusittava = "0"; if (file_exists($RSS_file_kansio.$RSS_file)) { // Jos löytyi, tarkistetaan ettei ole tarkistuväliä vanhempi $RSS_file_ika = mktime() - filemtime($RSS_file_kansio.$RSS_file); if ($RSS_file_ika > ($RSS_file_tarkistusvali*60)) $RSS_file_uusittava = "1"; // Jos tiedosto on vielä tuore, vaihdetaan lähde osoittamaan siihen else $RSS_lahde = $RSS_file_kansio.$RSS_file; } else $RSS_file_uusittava = "1"; // Jos on merkitty uusittavaksi, niin kirjoitetaan tiedosto if ($RSS_file_uusittava == "1") { $kahva = fopen($RSS_file_kansio.$RSS_file, 'w'); if (!@fwrite($kahva, implode("", file($RSS_lahde))) === FALSE) { // Jos tallennuksessa ei tule virhettä, vaihdetaan lähde osoittamaan levylle $RSS_lahde = $RSS_file_kansio.$RSS_file; } fclose($kahva); } // TILAPÄISTIEDOSTON LUOMINEN LOPPUU function lueRSS ($http_data) { // Luodaan parseri ja tehdään asetukset $data = implode("", file($http_data)); $parseri = xml_parser_create(); xml_parser_set_option($parseri, XML_OPTION_CASE_FOLDING, 0); xml_parser_set_option($parseri, XML_OPTION_SKIP_WHITE, 1); xml_parser_set_option($parseri, XML_OPTION_TARGET_ENCODING, "ISO-8859-1"); // Luetaan RSS-data ja vapautetaan parseri xml_parse_into_struct($parseri, $data, $arvo, $tagi); xml_parser_free($parseri); // Puretaan rakenne taulukkoon foreach ($tagi as $key=>$val) { if ($key == "item") { $tdb[] = parsi_RSS($arvo); } else { continue; } } return $tdb; } function parsi_RSS($RSS_arvot) { $alku = 0; $item_alku = 0; // Käydään läpi koko taulukko XML:n tagi/arvo -pareja for ($i=0; $i < count($RSS_arvot); $i++) { $tagi_nyt = $RSS_arvot[$i]["tag"]; $arvo_nyt = $RSS_arvot[$i]["value"]; if ($tagi_nyt == "image") $alku = 1; if ($tagi_nyt == "item") $alku = 2; // Luetaan metatiedot/kuvan tiedot, trimmataan data ja poistetaan peräkkäisistä väleistä ylimääräiset if ($alku < 2) $RSS_item[$alku][$tagi_nyt] = trim(preg_replace("/\s+/"," ",$arvo_nyt)); // Normaali data else if ($alku == 2) { // Huomaa taulukon uusi ulottuvuus - itemeitahan voi ja yleensä onkin useita $RSS_item[$alku][$item_alku][$tagi_nyt] = trim(preg_replace("/\s+/"," ",$arvo_nyt)); // Jos alkaa uusi item, niin siirrytään taulukon seuraavaan indeksiin if ($tagi_nyt == "item") $item_alku++; } } return $RSS_item; } // Haetaan valittu lähde taulukkoon $db = lueRSS($RSS_lahde); if (count($db[0]) < 2) $vikailmo = "Antamasi osoite ei sisältänyt kelvollista RSS-lähdettä"; // Linkkien muodostus - ehdot, joiden mukaan tulostetaan www-osoitteet linkkeinä $www_pattern = "/(http(s)?:\/\/[^\s\t\r\n]*)\b(\/)?/i"; $www_replacement = "\${0}"; } // Loppuu if ($RSS_lahde != "hip") // // TÄHÄN LOPPUU VARSINAINEN XML-TIEDON PARSINTA // Loppu on sovelluskohtaista - html:ää ja erilaisia tulostuksia taulukkoon tallennetusta tiedosta // // Listataulun aloitus $taulun_alku = "\n
"; // Listataulun lopetus $taulun_loppu = "\n
\n
\n"; ?> Tampereen kaupunki - RSS-lukija ja ohjeita " /> " />

Tampereen kaupungin RSS-lukija

\n"; // var_dump($db); // echo "\n\n"; // Tulostetaan alkupuheet vain, jos ei ole valittu lähdettä if ($RSS_lahde == "hip") { ?>

Tampereen kaupunki tarjoaa useita erilaisia RSS-pohjaisia avoimia rajapintoja käytettäväksi joko lukijan kautta tai siten, että tieto upotetaan omille sivuille. Tämä www-pohjainen lukija on tarkoitettu kehittäjille RSS-lähteiden tietojen selailua ja suunnittelua helpottamaan.

Huomioitavaa:

Tämän lukijan php-koodi (päivitetty 4.11.): rss_lukija.txt

\nLukijan etusivu\n

\n"; } ?>

Valitse Tampereen kaupungin RSS-lähde

tai syötä muun RSS-lähteen osoite

1) echo "

\n".$vikailmo."

\n"; // Jatketaan, jos lähde on valittu else if ($RSS_lahde != "hip") { // Kerrotaan haettiinko tiedosto alkuperäisestä lähteestä vai käytettiinkö // paikallista tiedostoa sekä tarkitusväli ja käytetyn tiedoston ikä if (floor($RSS_file_ika/60) < "1") { if ($RSS_file_ika == "1") $RSS_file_ika_muotoiltu = $RSS_file_ika." sekunti"; else $RSS_file_ika_muotoiltu = $RSS_file_ika." sekuntia"; } if (floor($RSS_file_ika/60) == "1") $RSS_file_ika_muotoiltu = "1 minuutti"; if (floor($RSS_file_ika/60) > "1") $RSS_file_ika_muotoiltu = floor($RSS_file_ika/60)." minuuttia"; echo "

\n"; if ($RSS_file_uusittava == "0") echo "Käytettiin paikallista tiedostoa. Tarkistusväli on ".$RSS_file_tarkistusvali." minuuttia, tiedoston ikä nyt ".$RSS_file_ika_muotoiltu.", alkuperäinen lähde:
".$RSS_lahde_alku."

\n"; if ($RSS_file_uusittava == "1") echo "Haettiin www-osoitteesta ".$RSS_lahde_alku." ja tallennettin tiedot paikalliseen tiedostoon.

\n"; // Ei tulosteta jos virtaa ei ole valittu if ($RSS_lahde != "hip") { echo "

".$db[0][0]["title"]."

"; ?>

1. Käyttöesimerkki - otsikot linkkeinä

$val) { foreach ($val as $key2=>$val2) { if ($key2 == "link") $linkki = $val2; if ($key2 == "title") $otsikko = $val2; if (strlen($otsikko) > 0 && strlen($linkki) > 0) { if ($loytyi_otsalinkki == '0') echo "\n

\n"; echo "".$otsikko."
\n"; $loytyi_otsalinkki = '1'; // Nollataan aina uuden itemin alkuun linkki ja otsikko $linkki = ""; $otsikko = ""; } } } if ($loytyi_otsalinkki == '1') echo "

\n"; else echo "\n

\nEi löytynyt linkki-otsikko -pareja\n

\n"; } // Loppuu else - if (strlen($vikailmo) > 1) ?>

Kaikki RSS-lähteen tiedot

Metatiedot

$val) { if (strlen($val) > 0) { echo "\n\n"; echo "".$key."\n"; echo "".preg_replace($www_pattern, $www_replacement,$val)."\n"; echo "\n"; } } echo $taulun_loppu; ?>

Kuva

\n"; echo ""; echo "\"".$db[0][1]['title']."\"\n"; echo "\n"; foreach ($db[0][1] as $key=>$val) { if (strlen($val) > 0) { echo "\n\n"; echo "".$key."\n"; echo "".preg_replace($www_pattern, $www_replacement,$val)."\n"; echo "\n"; } } echo $taulun_loppu; } else echo "\n

\nEi kuvaa\n

\n"; ?>

Itemit

$val) { foreach ($val as $key2=>$val2) { // Tulostetaan vain ne tagit, joilla on arvo if (strlen($val2) > 0) { if ($uusi_taulu == '1') { echo "\n

\nitem: ".$item_nro."\n

\n" . $taulun_alku; $uusi_taulu = '0'; $item_nro++; } echo "\n\n"; echo "".$key2."\n"; // Muutetaan vain linkin sisältö linkiksi if ($key2 == "link") echo "".preg_replace($www_pattern, $www_replacement,$val2)."\n"; // Tulostetaan muut tagit normaalisti else echo "".str_replace("
","
",$val2)."\n"; echo "\n"; } // Jos taulukko on uusi ja sisältöä löytyi, tulostetaan uusi html-taulu if ($key2 == "item" && $uusi_taulu == '0') echo $taulun_loppu; } $uusi_taulu = '1'; } } // Loppuu if ($RSS_lahde != "hip") ?>

© Tampereen kaupunki

Valid XHTML 1.1!