0

Hello friends, this code/snippet is nothing special, just a simple rss reader class written in PHP.

Many times in my projects I use this script to get an RSS feed from some website and now i decided to share with you.

This script can be useful for your projects or your education.

If you have any suggest or better solution you can share or you can correct me. :)


Here an example "How to use this script":

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title> PHP Library - RssAgent, RSS Reader </title>
    
    <style type="text/css">
		body{font-family: Arial, Helvetica, sans-serif; font-size: 14px; width: 980px; margin: 0 auto; padding-top: 30px; background-color: #EEEEEE;}
		._link { font-size: 16px; }
		.pDate { color: #888888; }
		.giud_link { text-decoration: none; color: #00AA00; font-size: 12px; }
		.content { background-color: #FFFFFF; padding: 25px; border: 1px #BBBBBB solid; }
	</style>

</head>

<body>

<div class="content">

	<?php

		include("RssAgent.php");
		$RSS = new RssAgent( "http://www.daniweb.com/external.php?type=RSS2" );
		
		for( $i = 0; $i < sizeof($RSS->title); $i++ )
		{
			echo '<a class="_link" href="' . $RSS->link[$i] . '" target="_blank">' . $RSS->title[$i] . '</a> - '; 
			echo '<span class="pDate">' . $RSS->pubDate[$i] . '</span> <br />';
			echo $RSS->description[$i] . "<br />";
			echo '<i> Category: ' . $RSS->category[$i] . "</i> <br />"; 
			echo '<a class="giud_link" href="' . $RSS->guid[$i] . '" target="_blank">' . $RSS->guid[$i] . "</a> <br />";
			echo "<br />";
		}

	?>

</div>

</body>
</html>

Edited by Krstevski: n/a

<?php

	/*
	*	
	*	Free Library - RssAgent
	*	
	*	Name: RssAgent
	*	Description: RSS Reader (RSS v2.0, http://cyber.law.harvard.edu/rss/rss.html)
	*	-> Reading an RSS feed from a website
	*	Author: Damjan Krstevski - SkyDriver
	*	License: Freeware, you can use, copy, edit, redistribute and etc...
	*	
	*/
	
	
	/*   ******************************  Start Class  ******************************   */
	class RssAgent {
	
	/* ***  Declaring variables  *** */
	var $title = array(),
		$link = array(),
		$description = array(),
		$category = array(),
		$guid = array(),
		$pubDate = array();
	/* ***  End of Declaring variables  *** */
	
		/* ***  Construct *** */
	   	function __construct( $urlFeed = NULL ) {
			$content = @file_get_contents( $urlFeed ); // Get the content from URL
			$x = new SimpleXmlElement( $content ); // Parse XML using SimpleXmlElement Class
			foreach( $x->channel->item as $entry ) // Fill the arrays with the rss feed
			{
				array_push( $this->title, $entry->title ); // Append title
				array_push( $this->link, $entry->link ); // Append link
				array_push( $this->description, strip_tags( $entry->description ) ); // Strip HTML tags and append description
				array_push( $this->category, $entry->category ); // // Append category
				array_push( $this->guid, $entry->guid ); // // Append guid
				array_push( $this->pubDate, $entry->pubDate ); // Append pubDate
			}
		}
		/* ***  End of Construct *** */
	
	}
	/*   ******************************  End Class  ******************************   */
	
?>
5
Contributors
8
Replies
33
Views
7 Years
Discussion Span
Last Post by diafol
0

Simple and clean script. One suggestion though, instead of all the array_push functions, why not loop trough every attribute from $entry? I've seen some RSS feeds that use something other than 'description' for some reason.

0

The script is written according to standards of RSS 2.0 to allow simple using:

$MyClass = new RssAgent("http://rss_feed_link.com");
echo $MyClass->element[$index];

If someone element is not in RSS then they attributes will be filled with empty string.

e.g if the rss contains just title and link, then the others elements (description, category, guid, pubDate) will have same number of element like a 'title' but their value will be empty string.

However, you can edit the script as you want according to your needs and thanks for your suggestion, maybe will be useful for someone. :)

Edited by Krstevski: n/a

0

Very useful script and it could be powerful with a few modifications.

1) Character limit of the description (ending with a full word). Many RSS feeds are just endless...
2) Adding an image tag, thus grabbing either a) the first available img (from the description) or b) the first enclosure img (rss feeds are different as to where they place their img) or c) if no img then display a custom img - logo - or nothing.

Would that be possible?
If so you would have created one of the most powerful and easy-to-use RSS parsers.
Even so, thanks for the work so far. The script is great...

Edited by SarahSt: mispell

0

3) Also specific words or phrases (like "readmore", "follow us on twitter", etc.) should be taken out from the feed therefore a str_replace method would be necessary. That would also help us with 2) since in order to pass an img tag we need to delete strip_tags from the existing code, therefore str_replace would be useful to remove tags like <strong>, <div> etc. that we may not need.

0

I want to believe that there are other people too that are interested in a good and simple RSS parser, like myself. I am looking right now to optimize Krstevski's code and I will make publicly available whatever I manage to do. But since I am not an expert PHP programmer anyone who can help is more than welcome...Krstevski or no Krstevski...

0

That's fine - just giving you a heads up that k doesn't seem to be around any more. Good luck with it.

Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.