2011-09-27 65 views
3

在我開始編寫一個驗證器來檢查一個URL是否實際上指向一個RSS feed的時候,我做了一些尋找可能存在的驗證器,但沒有任何可靠的驗證器。任何現有的RSS提要url驗證器?

我只是想詢問社區是否有人知道通過URL的RSS驗證器?

如果我要寫我自己的,你有什麼建議?

我正在考慮檢查一行文本的第一個實例,並確保它定義了<?xml version="1.0" encoding="UTF-8"?>,然後檢查下一個項目是否爲<rss>節點。

你在這裏有什麼想法?有沒有可能有飼料不符合上述語法的情況?

還要注意,一個方法,我嘗試使用了以下內容:

$valid = true; 

try{ 
    $content = file_get_contents($feed); 
    if (!simplexml_load_string($content)){ 
     $valid = false; 
    } 
} catch (Exception $e){ 
    $valid = false; 
} 

遺憾的是,似乎我無法抑制警告(error_reporting(0)不工作..),所以只修建垃圾我警告。


SOLUTION

對於任何人有興趣,我使用W3C驗證API

$url = "http://feed_url.com"; 
$validator = "http://validator.w3.org/feed/check.cgi"; 
$validator .= "?url=".$url; 
$validator .= "&output=soap12"; 

$response = file_get_contents($validator); 
$a = strpos($response, '<m:validity>', 0)+12; 
$b = strpos($response, '</m:validity>', $a); 
$result = substr($response, $a, $b-$a); 
echo $result; 

這將返回true或false相應。

+1

[取手冊中查找(http://www.php.net/manual/en/function.simplexml-load-string.php),存在用於如'LIBXML_NOERROR'東西一個選項參數,' LIBXML_NOWARNING'([ref](http://www.php.net/manual/en/libxml.constants.php))。有一個很好的閱讀,你的問題可能會消失。 – hakre

+0

@哈克雷,謝謝!想發佈這個答案,所以我可以給你信用?的 – Atticus

+0

可能重複[SimpleXML的錯誤處理PHP(http://stackoverflow.com/questions/1307275/simplexml-error-handling-php) – hakre

回答

4

W3C Feed Validation Service提供了一個SOAP接口。從About頁:

是否與此服務的公共API上的Web服務?

是的,有一個SOAP接口,可以通過使用查詢 參數output =「soap12」在常規查詢的頂部訪問。 SOAP 1.2 Web Service API documentation有更多的細節。

+0

優秀的資源!謝謝你的聯繫,我會用這個。 – Atticus

+0

@Atticus:沒問題!很高興你發現它有幫助。 –

+0

工作完美的男人,謝謝:) – Atticus