Need help modifying this rss parser..
I need it to grab title, link, and date. Also would like to be able to set how many items to show.
I am newbie so take it easy on me.
<?php
/*
*/
class RSSParser {
var $title = "";
var $link = "";
var $description = "";
var $inside_item = false;
// This is an example default that I chose to display on my site - [url]http://geek.scorpiorising.ca/[/url]
// Add new RSS feeds using this format;
// "http://www.wherever.com/path/to/rss/" => "Display name",
var $all_rss_urls = array(
"http://news.google.com/news?svnum=10&sourceid=navclient&ie=UTF-8&rls=GGLG%2CGGLG%3A2006-09%2CGGLG%3Aen&oe=UTF-8&tab=wn&as_drrb=q&as_qdr=&as_mind=22&as_minm=11&as_maxd=22&as_maxm=12&q=Steelers+Cowher+OR+offense+OR+defense+OR+Bires+source:beaver_county_times&scoring=d&output=rss" => "Freshmeat.net",
);
function startElement( $parser, $name, $attrs='' ){
global $current_tag;
$current_tag = $name;
if( $current_tag == "ITEM" )
$this->inside_item = true;
} // endfunc startElement
function endElement( $parser, $tagName, $attrs='' ){
global $current_tag;
if ( $tagName == "ITEM" ) {
printf( "\t<br /><a href='%s' target='_blank'>%s</a>\n", $this->link , $this->title);
$this->title = "";
$this->description = "";
$this->link = "";
$this->inside_item = false;
}
} // endfunc endElement
function characterData( $parser, $data ){
global $current_tag;
if( $this->inside_item ){
switch($current_tag){
case "TITLE":
$this->title .= $data;
break;
case "LINK":
$this->link .= $data;
break;
default:
break;
} // endswitch
} // end if
} // endfunc characterData
function parse_results( $xml_parser, $rss_parser, $file ) {
xml_set_object( $xml_parser, &$rss_parser );
xml_set_element_handler( $xml_parser, "startElement", "endElement" );
xml_set_character_data_handler( $xml_parser, "characterData" );
$fp = fopen("$file","r") or die( "Error reading XML file, $file" );
while ($data = fread($fp, 4096)) {
// parse the data
xml_parse( $xml_parser, $data, feof($fp) ) or die( sprintf( "XML error: %s at line %d", xml_error_string( xml_get_error_code($xml_parser) ), xml_get_current_line_number( $xml_parser ) ) );
} // endwhile
fclose($fp);
xml_parser_free( $xml_parser );
} // endfunc parse_results
function show_title( $rss_url ){
?>
<small></small>
<?
} // endfunc show_title
} // endclass RSSParser
global $rss_url;
// Set a default feed
if( $rss_url == "" )
$rss_url = "http://news.google.com/news?svnum=10&sourceid=navclient&ie=UTF-8&rls=GGLG%2CGGLG%3A2006-09%2CGGLG%3Aen&oe=UTF-8&tab=wn&as_drrb=q&as_qdr=&as_mind=22&as_minm=11&as_maxd=22&as_maxm=12&q=Steelers+Cowher+OR+offense+OR+defense+OR+Bires+source:beaver_county_times&scoring=d&output=rss";
$xml_parser = xml_parser_create();
$rss_parser = new RSSParser();
$rss_parser->show_title( $rss_url );
$rss_parser->parse_results( $xml_parser, &$rss_parser, $rss_url );
?>