Существуют ли валидаторы URL для RSS-канала? - PullRequest
3 голосов
/ 27 сентября 2011

Прежде чем я углублюсь в написание валидатора, чтобы проверить, действительно ли 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 соответственно.

Ответы [ 2 ]

4 голосов
/ 27 сентября 2011

Служба проверки подачи W3C предлагает интерфейс SOAP. Со страницы О :

Существует ли веб-служба с открытым API для этой службы?

Да, есть интерфейс SOAP, доступный по запросу параметр output = "soap12" поверх обычного запроса. Сеть SOAP 1.2 Документация API службы содержит более подробную информацию.

1 голос
/ 27 сентября 2011

Я бы сделал это:

  1. Это действительный XML? Если это так, продолжайте.

  2. Является ли элемент верхнего уровня rss или feed? Если так, это подача. Если нет, то это не так.

Это относится ко всем версиям RSS, кроме 1.0 и всем версиям Atom.

RSS 1.0 сложнее, так как его элемент верхнего уровня - RDF, и это более общий формат, чем RSS, так что вам придется глубже искать признаки RSS-ности. Но, к счастью, сейчас не так много RSS 1.0, большинство из них RSS 2.0 или Atom 1.0.

Надеюсь, это поможет, с обычными заявлениями об отказе, я не юрист и т. Д.

...