Announcement

Collapse
No announcement yet.

Using RSS Feeds

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Using RSS Feeds

    I'd like to add a business news spot on my page using RSS feeds. To be more specific, I'd like to use Yahoo's Business Feed ( http://rss.news.yahoo.com/rss/business ). My website is validated in HTML 4.01 Trans., so that may be a problem. Would anyone have any idea how to help me out or show me some tutorials on how to get these things working, and how to customize them to my sites style.
    Whilst sun and moon endure, America shall remain a city of refuge for the whole earth, until she herself shall play the tyrant, forget her destiny, disgrace her freedom, and provoke her God!
    ~George Duffield (Patriot Preacher)

  • #2
    That's pretty easy. All you need to do is to go to a place like RSSDigest and paste the link you mentioned. After that, you fill out the form with your details and paste the HTML into your pages.

    I made an example for you here using PHP.

    The whole thing took about 60 seconds
    Time's up

    Comment


    • #3
      Neither one of those links work ... I get an error with both of them.
      Whilst sun and moon endure, America shall remain a city of refuge for the whole earth, until she herself shall play the tyrant, forget her destiny, disgrace her freedom, and provoke her God!
      ~George Duffield (Patriot Preacher)

      Comment


      • #4
        ... then something is broke your side. They do work. Both.
        Time's up

        Comment


        • #5
          Ok, I kid you not, neither of them worked last night, but right now they work just fine... eerie.. Thanks BDH, I'll check them out later tonight after work!

          BTW: Could you post the php code you used?
          Whilst sun and moon endure, America shall remain a city of refuge for the whole earth, until she herself shall play the tyrant, forget her destiny, disgrace her freedom, and provoke her God!
          ~George Duffield (Patriot Preacher)

          Comment


          • #6
            The code is URL specific. You get it from the RSS site posted above. (They also give you the option to use java-script)
            Time's up

            Comment


            • #7
              Thanks BDH, now I just have to wait till the site is back up after upgrading .
              Whilst sun and moon endure, America shall remain a city of refuge for the whole earth, until she herself shall play the tyrant, forget her destiny, disgrace her freedom, and provoke her God!
              ~George Duffield (Patriot Preacher)

              Comment


              • #8
                BDH... You're the man!! We love you here!


                "Computers in the future may weigh no more than 1.5 tons." -- Popular Mechanics, 1949.

                ---------------

                Originally posted by ProjectPeter
                I think what happens is that folks get so used to what we call "trolls" coming around that we assume troll sometimes to quickly.

                Comment


                • #9
                  Hey BDH, do you know of any sites other than RSS Digest that could do the job? RSS Digest isn't projected to be back up until January... and I need this site finished in the middle of january.
                  Whilst sun and moon endure, America shall remain a city of refuge for the whole earth, until she herself shall play the tyrant, forget her destiny, disgrace her freedom, and provoke her God!
                  ~George Duffield (Patriot Preacher)

                  Comment


                  • #10
                    Yes, from This site ... I'm busy knocking together something very similar to RSS digest and hope to have it online in the next few weeks.

                    You can also take a look at the big G for more sites doing this.

                    Also, if you use one of the CMS apps like PHPNuke etc, most of these have built in RSS feed parsers you can enable, then you don't need a parser from a third party site.
                    Time's up

                    Comment


                    • #11
                      I ran it through phpNuke and set up the block and it works fine in the nuke area. But how do I get the headlines from the Nuke area to my other site? Or how can I get the headlines from one site to the other basically ..
                      Whilst sun and moon endure, America shall remain a city of refuge for the whole earth, until she herself shall play the tyrant, forget her destiny, disgrace her freedom, and provoke her God!
                      ~George Duffield (Patriot Preacher)

                      Comment


                      • #12
                        Actually, what I meant previously was that if you did your whole site in PHP Nuke, you could do this. To have Nuke installed just for the RSS seems a bit of an overkill.

                        Not exactly sure how one would do this ... In PHPNuke it probably uses an include directive to pull in the RSS page so you would need to do the same thing in the page you wanted it on.

                        The page would probably have to be either an IFRAME or php page in order to include the Nuke code.
                        Time's up

                        Comment


                        • #13
                          Ok well after some more research, I finally figuring out what an RSS feed is, and once I did that, I figured that I could simply search hotscripts and find a PHP script that would take and parse the RSS feed into HTML, similar to what those rss sites do for you, except it wouldn't have any of their advertising on it. So I found this script on hotscripts last night and it looks like it should work, but I'm not sure what's wrong, I included it onto my page via php include.

                          PHP Code:
                          <?php
                          /*
                           ======================================================================
                           lastRSS 0.9.1
                           
                           Simple yet powerfull PHP class to parse RSS files.
                           
                           by Vojtech Semecky, webmaster @ webdot . cz
                           
                           Latest version, features, manual and examples:
                               http://lastrss.webdot.cz/

                           ----------------------------------------------------------------------
                           LICENSE

                           This program is free software; you can redistribute it and/or
                           modify it under the terms of the GNU General Public License (GPL)
                           as published by the Free Software Foundation; either version 2
                           of the License, or (at your option) any later version.

                           This program is distributed in the hope that it will be useful,
                           but WITHOUT ANY WARRANTY; without even the implied warranty of
                           MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
                           GNU General Public License for more details.

                           To read the license please visit http://www.gnu.org/copyleft/gpl.html
                           ======================================================================
                          */

                          /**
                          * lastRSS
                          * Simple yet powerfull PHP class to parse RSS files.
                          */
                          class lastRSS {
                              
                          // -------------------------------------------------------------------
                              // Public properties
                              // -------------------------------------------------------------------
                              
                          var $default_cp 'UTF-8';
                              var 
                          $CDATA 'nochange';
                              var 
                          $cp '';
                              var 
                          $items_limit 0;
                              var 
                          $stripHTML False;
                              var 
                          $date_format '';

                              
                          // -------------------------------------------------------------------
                              // Private variables
                              // -------------------------------------------------------------------
                              
                          var $channeltags = array ('title''link''description''language''copyright''managingEditor''webMaster''lastBuildDate''rating''docs');
                              var 
                          $itemtags = array('title''link''description''author''category''comments''enclosure''guid''pubDate''source');
                              var 
                          $imagetags = array('title''url''link''width''height');
                              var 
                          $textinputtags = array('title''description''name''link');

                              
                          // -------------------------------------------------------------------
                              // Parse RSS file and returns associative array.
                              // -------------------------------------------------------------------
                              
                          function Get ($rss_url) {
                                  
                          // If CACHE ENABLED
                                  
                          if ($this->cache_dir != '') {
                                      
                          $cache_file $this->cache_dir '/rsscache_' md5($rss_url);
                                      
                          $timedif = @(time() - filemtime($cache_file));
                                      if (
                          $timedif $this->cache_time) {
                                          
                          // cached file is fresh enough, return cached array
                                          
                          $result unserialize(join(''file($cache_file)));
                                          
                          // set 'cached' to 1 only if cached file is correct
                                          
                          if ($result$result['cached'] = 1;
                                      } else {
                                          
                          // cached file is too old, create new
                                          
                          $result $this->Parse($rss_url);
                                          
                          $serialized serialize($result);
                                          if (
                          $f = @fopen($cache_file'w')) {
                                              
                          fwrite ($f$serializedstrlen($serialized));
                                              
                          fclose($f);
                                          }
                                          if (
                          $result$result['cached'] = 0;
                                      }
                                  }
                                  
                          // If CACHE DISABLED >> load and parse the file directly
                                  
                          else {
                                      
                          $result $this->Parse($rss_url);
                                      if (
                          $result$result['cached'] = 0;
                                  }
                                  
                          // return result
                                  
                          return $result;
                              }
                              
                              
                          // -------------------------------------------------------------------
                              // Modification of preg_match(); return trimed field with index 1
                              // from 'classic' preg_match() array output
                              // -------------------------------------------------------------------
                              
                          function my_preg_match ($pattern$subject) {
                                  
                          // start regullar expression
                                  
                          preg_match($pattern$subject$out);

                                  
                          // if there is some result... process it and return it
                                  
                          if(isset($out[1])) {
                                      
                          // Process CDATA (if present)
                                      
                          if ($this->CDATA == 'content') { // Get CDATA content (without CDATA tag)
                                          
                          $out[1] = strtr($out[1], array('<![CDATA['=>''']]>'=>''));
                                      } elseif (
                          $this->CDATA == 'strip') { // Strip CDATA
                                          
                          $out[1] = strtr($out[1], array('<![CDATA['=>''']]>'=>''));
                                      }

                                      
                          // If code page is set convert character encoding to required
                                      
                          if ($this->cp != '')
                                          
                          //$out[1] = $this->MyConvertEncoding($this->rsscp, $this->cp, $out[1]);
                                          
                          $out[1] = iconv($this->rsscp$this->cp.'//TRANSLIT'$out[1]);
                                      
                          // Return result
                                      
                          return trim($out[1]);
                                  } else {
                                  
                          // if there is NO result, return empty string
                                      
                          return '';
                                  }
                              }

                              
                          // -------------------------------------------------------------------
                              // Replace HTML entities &something; by real characters
                              // -------------------------------------------------------------------
                              
                          function unhtmlentities ($string) {
                                  
                          // Get HTML entities table
                                  
                          $trans_tbl get_html_translation_table (HTML_ENTITIESENT_QUOTES);
                                  
                          // Flip keys<==>values
                                  
                          $trans_tbl array_flip ($trans_tbl);
                                  
                          // Add support for &apos; entity (missing in HTML_ENTITIES)
                                  
                          $trans_tbl += array('&apos;' => "'");
                                  
                          // Replace entities by values
                                  
                          return strtr ($string$trans_tbl);
                              }

                              
                          // -------------------------------------------------------------------
                              // Parse() is private method used by Get() to load and parse RSS file.
                              // Don't use Parse() in your scripts - use Get($rss_file) instead.
                              // -------------------------------------------------------------------
                              
                          function Parse ($rss_url) {
                                  
                          // Open and load RSS file
                                  
                          if ($f = @fopen($rss_url'r')) {
                                      
                          $rss_content '';
                                      while (!
                          feof($f)) {
                                          
                          $rss_content .= fgets($f4096);
                                      }
                                      
                          fclose($f);

                                      
                          // Parse document encoding
                                      
                          $result['encoding'] = $this->my_preg_match("'encoding=[\'\"](.*?)[\'\"]'si"$rss_content);
                                      
                          // if document codepage is specified, use it
                                      
                          if ($result['encoding'] != '')
                                          { 
                          $this->rsscp $result['encoding']; } // This is used in my_preg_match()
                                      // otherwise use the default codepage
                                      
                          else
                                          { 
                          $this->rsscp $this->default_cp; } // This is used in my_preg_match()

                                      // Parse CHANNEL info
                                      
                          preg_match("'<channel.*?>(.*?)</channel>'si"$rss_content$out_channel);
                                      foreach(
                          $this->channeltags as $channeltag)
                                      {
                                          
                          $temp $this->my_preg_match("'<$channeltag.*?>(.*?)</$channeltag>'si"$out_channel[1]);
                                          if (
                          $temp != ''$result[$channeltag] = $temp// Set only if not empty
                                      
                          }
                                      
                          // If date_format is specified and lastBuildDate is valid
                                      
                          if ($this->date_format != '' && ($timestamp strtotime($result['lastBuildDate'])) !==-1) {
                                                  
                          // convert lastBuildDate to specified date format
                                                  
                          $result['lastBuildDate'] = date($this->date_format$timestamp);
                                      }

                                      
                          // Parse TEXTINPUT info
                                      
                          preg_match("'<textinput(|[^>]*[^/])>(.*?)</textinput>'si"$rss_content$out_textinfo);
                                          
                          // This a little strange regexp means:
                                          // Look for tag <textinput> with or without any attributes, but skip truncated version <textinput /> (it's not beggining tag)
                                      
                          if (isset($out_textinfo[2])) {
                                          foreach(
                          $this->textinputtags as $textinputtag) {
                                              
                          $temp $this->my_preg_match("'<$textinputtag.*?>(.*?)</$textinputtag>'si"$out_textinfo[2]);
                                              if (
                          $temp != ''$result['textinput_'.$textinputtag] = $temp// Set only if not empty
                                          
                          }
                                      }
                                      
                          // Parse IMAGE info
                                      
                          preg_match("'<image.*?>(.*?)</image>'si"$rss_content$out_imageinfo);
                                      if (isset(
                          $out_imageinfo[1])) {
                                          foreach(
                          $this->imagetags as $imagetag) {
                                              
                          $temp $this->my_preg_match("'<$imagetag.*?>(.*?)</$imagetag>'si"$out_imageinfo[1]);
                                              if (
                          $temp != ''$result['image_'.$imagetag] = $temp// Set only if not empty
                                          
                          }
                                      }
                                      
                          // Parse ITEMS
                                      
                          preg_match_all("'<item(| .*?)>(.*?)</item>'si"$rss_content$items);
                                      
                          $rss_items $items[2];
                                      
                          $i 0;
                                      
                          $result['items'] = array(); // create array even if there are no items
                                      
                          foreach($rss_items as $rss_item) {
                                          
                          // If number of items is lower then limit: Parse one item
                                          
                          if ($i $this->items_limit || $this->items_limit == 0) {
                                              foreach(
                          $this->itemtags as $itemtag) {
                                                  
                          $temp $this->my_preg_match("'<$itemtag.*?>(.*?)</$itemtag>'si"$rss_item);
                                                  if (
                          $temp != ''$result['items'][$i][$itemtag] = $temp// Set only if not empty
                                              
                          }
                                              
                          // Strip HTML tags and other bull**** from DESCRIPTION
                                              
                          if ($this->stripHTML && $result['items'][$i]['description'])
                                                  
                          $result['items'][$i]['description'] = strip_tags($this->unhtmlentities(strip_tags($result['items'][$i]['description'])));
                                              
                          // Strip HTML tags and other bull**** from TITLE
                                              
                          if ($this->stripHTML && $result['items'][$i]['title'])
                                                  
                          $result['items'][$i]['title'] = strip_tags($this->unhtmlentities(strip_tags($result['items'][$i]['title'])));
                                              
                          // If date_format is specified and pubDate is valid
                                              
                          if ($this->date_format != '' && ($timestamp strtotime($result['items'][$i]['pubDate'])) !==-1) {
                                                  
                          // convert pubDate to specified date format
                                                  
                          $result['items'][$i]['pubDate'] = date($this->date_format$timestamp);
                                              }
                                              
                          // Item counter
                                              
                          $i++;
                                          }
                                      }

                                      
                          $result['items_count'] = $i;
                                      return 
                          $result;
                                  }
                                  else 
                          // Error in opening return False
                                  
                          {
                                      return 
                          False;
                                  }
                              }
                          }

                          ?>
                          Last edited by FPG; Dec 20th 2004, 11:13 PM.
                          Whilst sun and moon endure, America shall remain a city of refuge for the whole earth, until she herself shall play the tyrant, forget her destiny, disgrace her freedom, and provoke her God!
                          ~George Duffield (Patriot Preacher)

                          Comment


                          • #14
                            Well after a few days working on it, I found a RSS Parser that worked for me, only to discover that it exports it to XHTML not to HTML. So I decided to give up on RSS feeds and went with cutenews to instead add news to the page manually. Thanks for all your help BDH. One thing has come out of this however, I'd like to write my own feed, though I think I'll wait until my PHP and XML classes are over . Again thanks for your help.
                            Whilst sun and moon endure, America shall remain a city of refuge for the whole earth, until she herself shall play the tyrant, forget her destiny, disgrace her freedom, and provoke her God!
                            ~George Duffield (Patriot Preacher)

                            Comment


                            • #15
                              I said it would be a few weeks before I had something ... well actually, it was a bit longer then that. Scroll down to the bottom of this page and click the image ... it can read the message board's RSS feed ... it's getting there slowly
                              Time's up

                              Comment

                              Working...
                              X