2013-10-03 31 views
1

我有以下代碼:PHP RSS獲取和多個RSS頻道顯示標題

 $rss[] = $this->rssparser->set_feed_url('someUrl')->set_cache_life(30)->getFeed(4); 
     $rss[] = $this->rssparser->set_feed_url('someURL')->set_cache_life(30)->getFeed(3); 
     $rss[] = $this->rssparser->set_feed_url('someURL')->set_cache_life(30)->getFeed(5); 

他們每個人都被顯示在不同的div S和我想的是,相關頻道的標題被顯示在相關div

到目前爲止,我有:

foreach ($rss as $feed) 
{ 
    $channel = $this->rssparser->channel_data['title']; 

    $result = "<div class='rssFeed'>"; 
    $result .= '<h3>'.$channel.'</h3>'; 

    foreach ($feed as $item) 
     { 
     $result .= '<div class="rssContent"> 
      <a href="'.$item['link'].'">'.$item['title'].'</a> 
      <br /> 
      <span>'.$item['pubDate'].'</span> 
      </div> 
      '; 
     } 
      $result .= '</div>'; 

      echo $result; 

     } 

,但只顯示在頂部的陣列的最後一個通道標題...

沒有任何人有一個想法,我做錯了什麼?

回答

0

您可以在獲取下一個Feed之前存儲頻道標題。例如: -

<?php 
class Controller 
{ 
    public function action() 
    { 
     $feeds = array(
      array('url' => 'http://example.org/feed.rss', 'count' => 3), 
      array('url' => 'http://example.org/feed.rss', 'count' => 4), 
      array('url' => 'http://example.org/feed.rss', 'count' => 5), 
     ); 

     $rss = array(); 

     foreach ($feeds as $feed) { 
      $rss[] = array(
       'items' => $this->rssparser->set_feed_url($feed['url'])->set_cache_life(30)->getFeed($feed['count']), 
       'title' => $this->rssparser->channel_data['title'], 
      ); 
      $this->rssparser->clear(); 
     } 
    } 
} 

你會然後遍歷飼料像這樣: -

<?php foreach ($rss as $feed): ?> 
    <h1><?php echo $feed['title']; ?></h1> 
    <?php foreach ($feed['items'] as $item): ?> 
     <a href="<?php echo $item['link']; ?>"> 
      <?php echo $item['title']; ?> 
     </a> 
    <?php endforeach; ?> 
<?php endforeach; ?> 
+0

感謝!這很棒! – hausinho