2011-05-24 73 views
0

PHP,閱讀RSS源。我的代碼工作正常,但不是所有的RSS鏈接,例如:
RSS鏈接有什麼區別?

錯誤的話,鏈接

  • http://stackoverflow.com/feeds/tag?tagnames=php&sort=newest
  • https://www.facebook.com/feeds/page.php?id=20669912712&format=rss20

錯誤消息

  • Parse error: syntax error, unexpected T_VARIABLE ...
  • Warning: DOMDocument::load() [domdocument.load]: Opening and ending tag mismatch ...

這些(上面)RSS鏈接是與各種類型代碼我發現的問題。
而且,有人說我這些鏈接不是「有效的」格式。
但是SimplePie可以很好地讀取這些鏈接

  • 爲什麼?
  • SimplePie可以閱讀這些鏈接..而不是我?

我希望我的代碼運行良好對所有像飼料了SimplePie ..;(
......

這裏是類的簡單代碼示例我使用:

class RSSREADER { 
private $xml; 
private $items; 
private $item; 

public static function _ParseFeeds ($link) 
{ 
    $self->xml = @simplexml_load_file($link); 
    echo $self->xml->channel->title.'<br />'; 
    echo $self->xml->channel->description.'<br /><br />'; 

    $self->items = $self->xml->channel->item; 
    foreach ($self->items as $self->item) { 
     echo $self->item->title.'<br />'; 
     echo $self->item->description.'<br />'; 
    } 
} 
} 

回答

2

大量的RSS提要實際上是無效的; SimplePie和其他解析器通常會竭盡全力解決這些可怕的實現問題,這就是爲什麼使用這些庫比編寫自己的代碼更容易的原因,我們使用SimplePie,並有大量的提要那裏是如此可怕甚至SimplePie失敗。

總之;除非你喜歡痛苦和/或有一些可怕的駕駛強迫寫自己的,使用另一個圖書館。正如你已經注意到的,試圖將它們解析爲純XML將經常失敗。

+0

@EI Yobo:'嘗試將它們解析爲純XML將失敗'???所以你的意思是飼料提交各種格式?所以請你能指出我哪個庫最好? - 感謝您的建議。 – Alvin 2011-05-24 01:08:13

+0

那麼,正如我已經指出的那樣,我們使用SimplePie;代碼可用[在這裏](https://github.com/simplepie/simplepie)。 Feed *應該*符合RSS標準,但通常*不*。任何想要閱讀RSS/Atom提要的內容都不能假定提要實際上是有效的;他們需要解決這個無效的問題。 – 2011-05-24 01:13:15

+0

+1,'除非你喜歡痛苦':) – 2011-05-24 01:24:50