Niinku kopioitu Mureakuhasta :: Tekijä: Neon :: Muokkaaja: Maqe^ ::
Käyttää XmLLää
<?php
$uutiset = new HS_top_news();
$uutiset = null;
class HS_top_news {
/*
###### HS_top_news class ####
* @version 1 22.03.2003
* Maqe^
* DESCRIPTION: Hakee uusimmat/tärkeimmät uutiset HS:n sivuilta ja parsii ne.
* CHANGELOG:
- parser kohtaan lisätty muutama kommentti pienehköksi manuaaliksi
- errormessageja.....
################################
*/
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);
endif;
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ä luokassa 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->__print();
/* vapautetaan parser, pakko vapauttaa koska tätä ei automaattisesti tapahdu */
xml_parser_free($this->parser);
}
/* PRIVATE */
function __print()
{
ksort($this->result);
$this->result = array_reverse($this->result);
echo "<table>\n";
foreach($this->result as $data):
echo $data;
endforeach;
echo '</table>';
return;
}
/* PRIVATE */
function startElement($parser, $name, $attrs) {
switch($name):
case "url":
case "pvm":
case "otsikko":
$this->tag = $name;
break;
endswitch;
}
/* PRIVATE */
function endElement($parser, $name) {
if($name == $this->tag)
$this->tag==null;
if($name == "uutinen"):
$part = "\t <tr>\n\t\t".'<td bgcolor="#00659A">'."\n\t\t\t".'<a href="'.$this->uutinen[1].'"><font color="lightblue" size="3">'.
$this->uutinen[2].'</font></a>'."\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t".'<td bgcolor="#DCEAFD">'."\n\t\t\t".'<font size="-3">('.$this->uutinen[0].')</font>'."\n\t\t</td>\n\t</tr>\n";
$this->result[$this->uutinen[4]] = $part;
$this->uutinen[2] = null;
endif;
}
/* 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;
$id = str_replace(":","",str_replace("-","",str_replace(" ","",$data)));
$this->uutinen[4] = $id;
break;
case "otsikko":
$this->uutinen[2] .= $data;
break;
endswitch;
endif;
}
}
?>Aihe on jo aika vanha, joten et voi enää vastata siihen.