Проверка действительного URL канала RSS - PullRequest
6 голосов
/ 16 сентября 2011

Я решил использовать SimplePie для разбора RSS-каналов и каналов Atom.

Я хочу, чтобы люди могли вводить URL RSS и Atom Feeds через текстовые поля.

Что если они поместят недопустимые каналы RSS и Atom?

Я знаю, что недопустимые каналы не будут анализироваться через SimplePie.

Но я хочу знать, можно ли анализировать каналы через SimplePie или нет.

И с помощью этого процесса я хочу удалить эти недействительные списки URL-адресов RSS-канала.

Проверка типа документа, XML или HTML будет первым шагом для выяснения действительности.

Как я могу это сделать в PHP? или есть другие способы сделать то, что я хочу сделать?

Ответы [ 3 ]

7 голосов
/ 16 сентября 2011

Чтобы проверить, может ли 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
}

Возможно, вы захотите отключить функцию автоматического обнаружения для проверкиURL конкретных фидов.Кроме того, вы можете самостоятельно получать данные каналов и использовать set_raw_data вместо set_feed_url.

0 голосов
/ 16 сентября 2011

Это то, что я сделал.

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

Это решило основную проблему. Что у меня было.

0 голосов
/ 16 сентября 2011

Здесь, кажется, готовая к использованию функция: 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!";
}
...