Используйте SimpleXML для разбора нескольких RSS-каналов - PullRequest
3 голосов
/ 18 января 2011

Как я могу поместить несколько RSS-каналов из SimpleXML в массив, отсортированный по pubDate?

Пример:

feed[0] = 'http://www.example.org/feed1.rss';
feed[1] = 'http://www.thing.org/feed.rss';
...
feed[n] = '..';

#Fetch feeds
#Sort by pubDate

foreach ($feeds as $row) {
   //Do something
   print '<item>
          <title>...</title>
          </item>';
}

Ответы [ 2 ]

7 голосов
/ 18 января 2011
// Set the feed URLs here
$feeds = array(
    'http://www.example.org/feed1.rss',
    'http://www.example.org/feed2.rss',
    // etc.
);

// Get all feed entries
$entries = array();
foreach ($feeds as $feed) {
    $xml = simplexml_load_file($feed);
    $entries = array_merge($entries, $xml->xpath('/rss//item'));
}

// Sort feed entries by pubDate (ascending)
usort($entries, function ($x, $y) {
    return strtotime($x->pubDate) - strtotime($y->pubDate);
});

print_r($entries);

Работает в PHP 5.3.

0 голосов
/ 18 января 2011

Вы помещаете значения элемента в многомерный массив, затем сортируете, используя usort (), затем печатаете. У вас есть более конкретные вопросы?

...