2010-03-16 1 views
15

Voglio analizzare un feed RSS esistente da un altro sito Web con php e quindi memorizzarne alcune parti in un database mysql.ottieni il feed RSS nell'array php - possibile?

Sono molto competente con php e mysql ma non ho mai lavorato con feed RSS prima, da dove dovrei iniziare?

  1. c'è un equivalente a file_get_contents() per ottenere rss in php?
  2. i feed rss sono suddivisi in xml/microdata o devo usare regex per afferrare i bit?

evviva!

risposta

28

Versione corta: (NEW)

demo:http://so.devilmaycode.it/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} 
       ) 

     ) 

) 

Versione lunga: (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; 
} 
?> 
+0

fresco, darò una prova. Ho anche trovato questo: http://magpierss.sourceforge.net/? – Haroldo

+0

+1 per suggerire l'analisi del DOM per l'analisi RSS invece di usare una libreria, sebbene ci fossero molti formati diversi là fuori l'ultima volta che ho scritto il mio lettore RSS. – Residuum

+0

Woah, citazioni strane che hai avuto lì. L'ho risolto per te. – Franz

0

Credo che lo Simplepie lo farà anche per te.