2011-09-16 90 views
5

我決定使用SimplePie來解析RSS和Atom提要。檢查有效的RSS提要URL

我想要做的是讓人們通過文本字段輸入RSS和Atom Feeds URL。

如果他們把無效的RSS和Atom Feeds?

我知道無效的Feeds不會通過SimplePie解析。

但我想知道Feed是否可以通過SimplePie進行分析。

並通過該過程,我想刪除那些無效的RSS提要URL列表。

檢查文檔類型,XML或HTML將是查明有效性的第一步。

我該如何在PHP中做到這一點?還是有其他方法可以做我想做的事情?

+0

您正在使用哪種版本的Simplepie? – hakre

+0

@hakre我正在使用版本1.2 – InspiredJW

回答

6

要檢查了SimplePie能夠解析飼料或沒有,你可以加載有問題的飼料,並檢查錯誤:

$feed = new SimplePie(); 
$feed->set_feed_url('http://example.com/rss'); 
$feed->init(); 
$feed->handle_content_type(); 

if ($feed->error()) 
{ 
    // this feed has errors 
} 

您可能想禁用自動發現功能來測試特定的Feed網址。此外,您可以自行獲取Feed數據,並使用set_raw_data而不是set_feed_url

+1

Gracias !!!!! :) – InspiredJW

0

這裏似乎是現成的使用功能: http://www.sitepoint.com/forums/showthread.php?555763-Validating-an-RSS-Feed-with-PHP&p=3865285&viewfull=1#post3865285

所以,你只需要調用

$rssvalid = validateFeed("http://yourUrlHere.com"); 
if($rssvalid == true){ 
print"Yes, it´s valid!"; 
} else { 
print"Sorry, it´s not valid!"; 
} 
+0

我試過這個..問題是,這個validateFeed函數嚴格檢查Feed的有效性。即使validateFeed表示它是無效的,但某些訂閱源可通過simplepie進行解析。 – InspiredJW

0

這是我做了什麼。

if(strpos(file_get_contents($feed_url),'<?xml')===false) { 
    //remove this $feed_url from the Feed List 
    return; 
} 

這解決了基本問題我有什麼。