18

I want to parse an existing RSS feed from another website with php and then store certain parts of it in a mysql database.

I'm very competent with php and mysql but have never worked with rss feeds before, where should i start?

  1. is there an equivalent to file_get_contents() for getting rss into php?
  2. are rss feeds broken down into xml/microdata or do i need to use regex to grab bits?

cheers!

4 Answers 4

31

Short Version: ( NEW )

demo: http://so.lucafilosofi.com/get-rss-feed-into-php-array-possible/

$feed = 'http://stackoverflow.com/opensearch.xml';
$feed_to_array = (array) simplexml_load_file($feed);
//OR $feed_to_array = (array) new SimpleXmlElement( file_get_contents($feed) );
print_r($feed_to_array);

//output

Array
(
    [ShortName] => Stack Overflow
    [Description] => Search Stack Overflow: Q&A for professional and enthusiast programmers
    [InputEncoding] => UTF-8
    [Image] => http://sstatic.net/stackoverflow/img/favicon.ico
    [Url] => SimpleXMLElement Object
        (
            [@attributes] => Array
                (
                    [type] => text/html
                    [method] => get
                    [template] => http://stackoverflow.com/search?q={searchTerms}
                )

        )

)

Long Version: ( OLD )

<?php

$rss_tags = array(  
'title',  
'link',  
'guid',  
'comments',  
'description',  
'pubDate',  
'category',  
);  
$rss_item_tag = 'item';  
$rss_url = 'http://www.webaddict.info/feeds/news.xml';

$rssfeed = rss_to_array($rss_item_tag, $rss_tags, $rss_url);

echo '<pre>';  
print_r($rssfeed);

function rss_to_array($tag, $array, $url) {  
  $doc = new DOMdocument();  
  $doc->load($url);  
  $rss_array = array();  
  $items = array();  
  foreach($doc-> getElementsByTagName($tag) AS $node) {  
    foreach($array AS $key => $value) {  
      $items[$value] = $node->getElementsByTagName($value)->item(0)->nodeValue;  
    }  
    array_push($rss_array, $items);  
  }  
  return $rss_array;  
}  
?>
Sign up to request clarification or add additional context in comments.

5 Comments

cool, i'll give it a try. I also found this: magpierss.sourceforge.net ?
+1 for suggesting DOM parsing for RSS analyzation instead of using a library, although there were many different formats out there the last time I have written my own RSS reader.
Woah, weird quotes you had there. I fixed it for you.
this is perfect, works a treat and using just 1 function! (the example doesn't work because the rss feed no longer exists) thanks again
Also make sure you checkout SimpleXML which is fantastic for dealing with any XML, including RSS. uk.php.net/simplexml
0

I believe Simplepie will do this for you as well.

Comments

0

If others come past, an end-to-end very simple free code example of this is on;

http://code.google.com/p/rssingest/

Comments

-1

The best Feed consumer library in PHP is RSSClient[1]

[1] https://github.com/desarrolla2/RSSClient

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.