Example Usage: $url = "http://www.bknebel.blogspot.com"; $sp = new SimplePie(); $feeds = $sp->autodiscovery($url, false); foreach($feeds as $feed) { echo "{$feed['title']} {$feed['url']}
"; } That will show all local and external feeds. $feeds = $sp->autodiscovery($url) would show only local feeds. function autodiscovery($url, $local_only = true) { $feed_urls = array(); $spl = new SimplePie_Locator($url); // Check to see if URL is already a feed ? $spf = new SimplePie_File($url, 1, 5, null, $spl->useragent); $spf->body(); $spf->close(); if (((stristr($spf->body(), 'body())) && (preg_match('/<([a-z0-9]+\:)?channel/mi', $spf->body()) || preg_match('/<([a-z0-9]+\:)?item/mi', $spf->body()))) || (preg_match('/<([a-z0-9]+\:)?feed/mi', $spf->body()) && (preg_match('/<([a-z0-9]+\:)?author/mi', $spf->body()) || preg_match('/<([a-z0-9]+\:)?entry/mi', $spf->body())))) { $feed = new SimplePie(); $feed->strip_ads(false); $feed->bypass_image_hotlink(false); $feed->set_file($spf); $feed->init(); $feeds[] = array( 'url' => $url, 'title' => $feed->get_feed_title()); return $feeds; } // Search for feeds in elements $links = SimplePie_Misc::get_element('link', $spl->file->body()); $done = array(); foreach ($links as $link) { if (!empty($link['attribs']['TYPE']['data']) && !empty($link['attribs']['HREF']['data'])) { $type = strtolower(trim($link['attribs']['TYPE']['data'])); $href = SimplePie_Misc::absolutize_url(trim($link['attribs']['HREF']['data']), $spl->file->url); if (!in_array($href, $done) && in_array($type, array('application/rss+xml', 'application/atom+xml', 'application/rdf+xml', 'application/xml+rss', 'application/xml+atom', 'application/xml+rdf', 'application/xml', 'application/x.atom+xml', 'text/xml'))) { $feed_urls[] = $href; } $done[] = $href; } } // Find links to feeds in $spl->useragent = $spl->file->useragent; if ($spl->get_links($spl->file)) { if (!empty($spl->local)) { foreach ($spl->local as $key => $value) { $value = SimplePie_Misc::absolutize_url($value, $spl->file->url); if (in_array(strrchr($value, '.'), array('.rss', '.rdf', '.atom', '.xml'))) { $feed_urls[] = $value; } elseif (preg_match('/(rss|rdf|atom|xml)/i', $value)) { $feed_urls[] = $value; } } } if (!empty($spl->elsewhere) && $local_only == false) { foreach ($spl->elsewhere as $key => $value) { $value = SimplePie_Misc::absolutize_url($value, $spl->file->url); if (in_array(strrchr($value, '.'), array('.rss', '.rdf', '.atom', '.xml'))) { $feed_urls[] = $value; } elseif (preg_match('/(rss|rdf|atom|xml)/i', $value)) { $feed_urls[] = $value; } } } } if(!empty($feed_urls)) { foreach($feed_urls as $url) { $spf = new SimplePie_File($url, 1, 5, null, $spl->useragent); $spf->body(); $spf->close(); if (((stristr($spf->body(), 'body())) && (preg_match('/<([a-z0-9]+\:)?channel/mi', $spf->body()) || preg_match('/<([a-z0-9]+\:)?item/mi', $spf->body()))) || (preg_match('/<([a-z0-9]+\:)?feed/mi', $spf->body()) && (preg_match('/<([a-z0-9]+\:)?author/mi', $spf->body()) || preg_match('/<([a-z0-9]+\:)?entry/mi', $spf->body())))) { $feed = new SimplePie(); $feed->strip_ads(false); $feed->bypass_image_hotlink(false); $feed->set_file($spf); $feed->init(); $feeds[] = array( 'url' => $url, 'title' => $feed->get_feed_title()); } } } return $feeds; }