Jump to content

Please Help With Old Rss Php Parser


allegro12

Recommended Posts

This code scrambles the Title, Description and Link results so that the Description regularly comes up earlier than the Title and Link. I suspect that it's in the function createHtmlFromRSSUrl. It's old code, but really usefull from 2008 and ScarySoftware who apparently met their demise. Anyone?

 

<?php

//

// ScarySoftware RSS parser

// Copyright © 2006 Scary Software

// ( Generates HTML from a RSS feeds )

//

// Licensed Under the Gnu Public License

//

 

 

class rssReader {

 

var $rssFeeds;

 

// Class constructor

function rssReader() {

 

// Here are the feeds - you can add to them or change them

$this->rssFeeds = array(

0 => "http://rest.ebay.com/epn/v1/find/item.rss?keyword=%28quilting+machine%2Cquilt+sewing+machine%29&sortOrder=BestMatch&programid=1&campaignid=xxxxxx0101&toolid=10039&customid=QRSS&listingType1=All&lgeo=1&feedType=rss",

);

}

 

function checkCache($rss_url) {

 

$ttl = 60*60;// 60 secs/min for 60 minutes = 1 hour(360 secs)

$cachefilename = md5(md5($rss_url));

 

if (file_exists($cachefilename) && (time() - $ttl < filemtime($cachefilename)))

{

$feed = file_get_contents($cachefilename);

}

else

{

$feed = file_get_contents($rss_url);

$fp = fopen($cachefilename, 'w');

fwrite($fp, $feed);

fclose($fp);

}

 

return $feed;

 

}

 

//

// Creates HTML from a FeedID in the array

// it makes $howmany entries

//

function createHtmlFromFeed($feedid, $howmany) {

 

// Now we make sure that we have a feed selected to work with

$rss_url = $this->rssFeeds[$feedid];

if (!isset($rss_url)) $rss_url = $this->rssFeeds[$feedid];

$howmany = intval($howmany);

 

$this->createHtmlFromRSSUrl( $rss_url, $howmany );

 

}

 

//

// Create HTML from an RSS URL

// it makes $howmany entires

//

function createHtmlFromRSSUrl( $rss_url, $howmany )

{

// Now we get the feed and cache it if necessary

$rss_feed = $this->checkCache($rss_url);

 

// Now we replace a few things that may cause problems later

$rss_feed = str_replace("<![CDATA[", "", $rss_feed);

$rss_feed = str_replace("]]>", "", $rss_feed);

$rss_feed = str_replace("\n", "", $rss_feed);

 

// If there is an image node remove it, we aren't going to use

// it anyway and it often contains a <title> and <link>

// that we don't want to match on later.

$rss_feed = preg_replace('#<image>(.*?)</image>#', '', $rss_feed, 1 );

 

// Now we get the nodes that we're interested in

preg_match_all('#<title>(.*?)</title>#', $rss_feed, $title, PREG_SET_ORDER);

preg_match_all('#<description>(.*?)</description>#', $rss_feed, $description, PREG_SET_ORDER);

preg_match_all('#<link>(.*?)</link>#', $rss_feed, $link, PREG_SET_ORDER);

 

//

// Now that the RSS/XML is parsed.. Lets Make HTML !

//

 

// If there is not at least one title, then the feed was empty

// it happens sometimes, so lets be prepared and do something

// reasonable

if(count($title) <= 1)

{

echo "No items at present, please check back later.<br><br>";

}

else

{

// OK Here we go, this is the fun part

 

// Well do up the top 3 entries from the feed

for ($counter = 1; $counter <= $howmany; $counter++ )

{

// We do a reality check to make sure there is something we can show

if(!empty($title[$counter][1]))

{

// Then we'll make a good faith effort to make the title

// valid HTML

$title[$counter][1] = str_replace("&", "&", $title[$counter][1]);

$title[$counter][1] = str_replace("'", "'", $title[$counter][1]);

$title[$counter][1] = str_replace("£", "?", $title[$counter][1]);

 

// The description often has encoded HTML entities in it, and

// we probably don't want these, so we'll decode them

$description[$counter][1] = html_entity_decode( $description[$counter][1]);

 

// Now we make a pretty page bit from the data we retrieved from

// the RSS feed. Remember the function FormatRow from the

// beginning of the program ? Here we put it to use.

$row = $this->FormatEntry($title[$counter][1],$description[$counter][1],$link[$counter][1]);

 

// And now we'll output the new page bit!

echo $row;

}

}

}

}

 

function FormatEntry($title, $description, $link) {

return <<<eof

 

<p class="feed_title">{$title}</p>

<p class="feed_description">{$description}</p>

<a class="feed_link" href="{$link}" rel="nofollow" target="_blank">Read more...</a>

<hr size=1>

 

eof;

}

 

 

function GetrssFeeds() {

return $this->rssFeeds;

}

 

function SetrssFeeds($rssFeeds) {

$this->rssFeeds = $rssFeeds;

}

 

 

}// END OF THE CLASS

 

?>

Link to comment
https://forums.phpfreaks.com/topic/271407-please-help-with-old-rss-php-parser/
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.