| Uutiset | Koodikirjasto | Wiki | Keskustelut | FAQ | Info |
HS newsneon 24.03.03 21:13 Haetaan tärkeimmät/tuoreimmat uutiset HS:n sivuilta.
<?php $uutiset = new HS_top_news(); foreach($uutiset->get() as $uutinen) { printf('<li><a href="%s">%s</a>(%s)</li>', $uutinen[1], $uutinen[2], date("Y.m.d H:i", $uutinen[0]));; } class HS_top_news { /* * HS_top_news class * @version 1 22.03.2003 @copyright * neon <neon@neon-line.net> * DESCRIPTION: Hakee uusimmat/tärkeimmät uutiset HS:n sivuilta ja parsii ne. * CHANGELOG: * - parser kohtaan lisätty muutama kommentti pienehköksi manuaaliksi * - errormessageja..... * - palauttaa uutiset taulukkona. kellonajat unix timestamp muodossa. */ var $parser; /* * @resource XMLparser */ var $tag; /* * @string viimeinen käsitelty merkki */ var $result = array(); /* * @array itse lopullinen data */ var $uutinen = array(); /* * @array sisäinen datakeeper */ /* PUBLIC */ function HS_top_news() { if (!function_exists('xml_parse')) { exit('Järjestelmässäsi ei ole XML SAX-parser ominaisuuksia, ohjelma lopetetaan.'); } $url = "http://siirto.helsinginsanomat.fi/aukio/HS-Tuoreet-Top5.xml"; if (function_exists("file_get_contents")) { $data = @file_get_contents($url); } else { $fp = @fopen($url, "r"); $data = @fread($fp, 4086); @fclose($fp); } if (!empty($data)) { $this->parse($data); } else { exit("Kohteesta $url ei saatu tietoja"); } return; } /* PRIVATE */ function parse($xmlstring) { /* luodaan parser */ $this->parser = xml_parser_create(); /* * Asetetaan mikä muuttuja sisältää xml parserin ja miss assa * parser toimii */ xml_set_object($this->parser, $this); xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, false); /* * parsittaessa tagin alkaessa kutsutaan startElement metodi * ja tagin loppuessa endElement metodi */ xml_set_element_handler($this->parser, "startElement", "endElement"); /* characterData käsittelee varsinaisen datan tagien välissä */ xml_set_character_data_handler($this->parser, "characterData"); /* parsitaan */ xml_parse($this->parser, $xmlstring); $this->__sort(); /* * vapautetaan parser, pakko vapauttaa koska tätä ei * automaattisesti tapahdu */ xml_parser_free($this->parser); } /* PUBLIC */ function get() { $tmp = array(); foreach($this->result as $item) $tmp[] = $item; return $tmp; } /* PRIVATE */ function __sort() { ksort($this->result); $this->result = array_reverse($this->result); return; } /* PRIVATE */ function startElement($parser, $name, $attrs) { switch ($name) { case "url": case "pvm": case "otsikko": $this->tag = $name; break; } } /* PRIVATE */ function endElement($parser, $name) { if ($name == $this->tag) { $this->tag == null; } if ($name == "uutinen") { $this->uutinen[0] = strtotime($this->uutinen[0]); $this->result[$this->uutinen[0]] = $this->uutinen; $this->uutinen = array(); } } /* PRIVATE */ function characterData($parser, $data) { $data = trim($data); if (!empty($data) && $data != "\n") { switch ($this->tag) { case "url": $this->uutinen[1] = $data; break; case "pvm": $this->uutinen[0] = $data; break; case "otsikko": if (!isset($this->uutinen[2])) $this->uutinen[2] = ''; $this->uutinen[2].= utf8_decode($data); break; } } } } ?> kihis 21:21 24.3.03 miks pitää tehdä kaikki niin vaikeesti? Runoltaja 01:01 25.3.03 Neon on valo ane 08:33 25.3.03 kvihijar: mieti sitä :) ZcMander 14:14 25.3.03 HS = Helsingin sanomat? Täällä kyllä on semmonen ja on lyhempi Akiro 14:42 25.3.03 Se toinen on sellanen purkka-systeemi, näin XML:ää kuuluu parsia.. neon 16:29 25.3.03 Lähinnä ajattelin että tässä olisi käytännön esimerkki miten XML:lää suositellaan parsittavaksi, tietty voit myös käyttää DOM parseria tai rekentaa vaikkapa oman. Kukaan ei rajoita sitä mitä käytät, mutta toivon että joku sai vinkkejä XML opiskelujaan varten. Kuitenkin XML:län osema on tulevaisuudessa merkittävässä osassa. Runoltaja 10:10 31.3.03 Tämä on erinomainen esimerkki. But. Olen nähnyt muutamia koodinpätkiä, jolla laitetaa xmllää kantaan, mutta sellainen yksinkrertainen esimerkki puuttuisi, sellainen josta hahmottaisi itse asian... verpamil 15:05 24.4.03 Hyvä! Mutta vielä kun saisi turhan html:n pois fuktioista. Pelkkä array palautukseen, millä kukin saa tehdä mitä lystää. Antarktis 19:00 21.5.05 kertosko joku mulle kuinka saan ton bugin korjattua kun se näyttää tälleen: Persson hyökkää pornoa vastaan (2005-05-21 18:34:34) Haka ja TamU pelasivat maalittoman tasapelin (2005-05-21 18:30:01) Poliisi hajotti mielenosoituksen Uzbekistanissa (2005-05-21 18:21:28) Räikkönen nopein 1. aika-ajossa (2005-05-21 15:11:39) SAK:n liitot valmiit tukemaan Paperia (2005-05-21 14:57:50) VhtrMrk 13:33 13.10.05 Ääkköset tosiaan bygii maggaraa 10:44 25.1.06 Antarktis ja VhtrMrk: Se on utf-8 decodattua... utf8_decode($data) |
![]() Haku
|