在我開始編寫一個驗證器來檢查一個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相應。
[取手冊中查找(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
@哈克雷,謝謝!想發佈這個答案,所以我可以給你信用?的 – Atticus
可能重複[SimpleXML的錯誤處理PHP(http://stackoverflow.com/questions/1307275/simplexml-error-handling-php) – hakre