Прежде чем я углублюсь в написание валидатора, чтобы проверить, действительно ли URL-адрес указывает на RSS-канал, я немного поискал некоторые валидаторы, которые могут существовать, но им не повезло с какими-либо надежными.
Я просто хотел спросить сообщество, знает ли кто-нибудь из вас о валидаторе RSS по URL?
Если бы я написал свой собственный, что бы вы предложили?
Я думал опросто проверьте первый экземпляр строки текста и убедитесь, что он определяет <?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)
не работает ..), поэтому просто спамит меня предупреждениями.
РЕШЕНИЕ
Для всех, кто заинтересован, яиспользовал API валидатора W3C
$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 соответственно.