jwchang
jwchang

Reputation: 10864

Checking Valid RSS feed URL

I have decided to use SimplePie to parse RSS and Atom Feeds.

What I want to do is that let people to input RSS and Atom Feeds URL through text fields.

What If they put invalid RSS and Atom Feeds?

I know that invalid Feeds won't be parsed through SimplePie.

But I want to know whether the Feeds are able to be parsed through SimplePie or not.

And through that process, I want to delete those invalid RSS feed URL lists.

Checking the document type, XML or HTML will be a first step to find out the validness.

How can I do that in PHP? or is there other ways to do what I want to do?

Upvotes: 6

Views: 5519

Answers (3)

hakre
hakre

Reputation: 197757

To check if Simplepie is able to parse a feed or not, you can just load the feed in question and check for errors:

$feed = new SimplePie();
$feed->set_feed_url('http://example.com/rss');
$feed->init();
$feed->handle_content_type();

if ($feed->error())
{
    // this feed has errors
}

You might want to disable the auto-discovery feature to test specific feed URLs. Additionally you can aquire the feeds data on your own and use set_raw_data instead of set_feed_url.

Upvotes: 7

jwchang
jwchang

Reputation: 10864

This is what I have done.

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

This resolved basic problem What I had.

Upvotes: 0

Olli
Olli

Reputation: 752

Here seems to be ready-to-use function: http://www.sitepoint.com/forums/showthread.php?555763-Validating-an-RSS-Feed-with-PHP&p=3865285&viewfull=1#post3865285

So you just call

$rssvalid = validateFeed("http://yourUrlHere.com");
if($rssvalid == true){
print"Yes, it´s valid!";
} else {
print"Sorry, it´s not valid!";
}

Upvotes: 0

Related Questions