<?xml version="1.0" ?>
<rss version="2.0">
	<channel>
		<title>Keith's Weblog: Comments on &quot;RSS auto-discovery with PHP&quot;</title>
		<description>Keith's Weblog: Comments on &quot;RSS auto-discovery with PHP&quot;, posted on June 3, 2002</description>
		<link>http://keithdevens.com/weblog/archive/2002/Jun/03/RSSAuto-DiscoveryPHP</link>

		<category>Programming</category>
		<language>en-us</language>
		<image>
			<link>http://keithdevens.com/weblog</link>
			<title>Keith Devens .com</title>
			<url>http://keithdevens.com/images/kbd.gif</url>
		</image>

		<item>
			<title>by Keith Gaughan</title>
			<link>http://keithdevens.com/weblog/archive/2002/Jun/03/RSSAuto-DiscoveryPHP#comment457</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/2130#comment457</guid>
			<pubDate>Tue, 04 Jun 2002 03:57:54 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Well, he's went and fixed it now.&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Keith</title>
			<link>http://keithdevens.com/weblog/archive/2002/Jun/03/RSSAuto-DiscoveryPHP#comment458</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/2130#comment458</guid>
			<pubDate>Tue, 04 Jun 2002 04:06:58 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Yeah, I started to put the message I just put there a while ago, but my computer was wonky and then I had to go out for the night, so I didn't get to do it.&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Nicolas Hoizey &lt;nhoizey@php.net&gt;</title>
			<link>http://keithdevens.com/weblog/archive/2002/Jun/03/RSSAuto-DiscoveryPHP#comment1820</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/2130#comment1820</guid>
			<pubDate>Tue, 15 Apr 2003 13:48:41 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;It seems there is a bug somewhere in the URL creation.&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;I try using your script with the folowing URL :&lt;br /&gt;
&lt;a href=&quot;http://www.phpheaven.net/rubrique14.html&quot;&gt;http://www.phpheaven.net/rubrique14.html&lt;/a&gt;&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;It should give me this RSS feed :&lt;br /&gt;
&lt;a href=&quot;http://www.phpheaven.net/rss2.xml&quot;&gt;http://www.phpheaven.net/rss2.xml&lt;/a&gt;&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Bug instead it gives me this :&lt;br /&gt;
&lt;a href=&quot;http://www.phpheaven.net/rubrique14.html/rss2.xml&quot;&gt;http://www.phpheaven.net/rubrique14.html/rss2.xml&lt;/a&gt;&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Anyway, great job!&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Keith</title>
			<link>http://keithdevens.com/weblog/archive/2002/Jun/03/RSSAuto-DiscoveryPHP#comment1821</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/2130#comment1821</guid>
			<pubDate>Tue, 15 Apr 2003 18:41:48 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Hi Nicolas. I should have been clearer in my documentation. The $location you're supposed to pass as the second parameter to the getRSSLocation function is supposed to be the &lt;em&gt;base&lt;/em&gt; location, not the page itself. So in your case, the base location would be &lt;a href=&quot;http://www.phpheaven.net/&quot;&gt;http://www.phpheaven.net/&lt;/a&gt;, not &lt;a href=&quot;http://www.phpheaven.net/rubrique14.html&quot;&gt;http://www.phpheaven.net/rubrique14.html&lt;/a&gt;.&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;However, it was easy to change the behavior to match what you expected, so I changed the code. I also updated it to work with error_reporting(E_ALL) on. So grab the new code and give it a try, and let me know if you have any problems.&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Jason DeFillippo</title>
			<link>http://keithdevens.com/weblog/archive/2002/Jun/03/RSSAuto-DiscoveryPHP#comment2125</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/2130#comment2125</guid>
			<pubDate>Mon, 02 Jun 2003 04:02:14 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Love it! Only suggestion would be to return an array of all possible hits. I have 2 RSS feeds on my site. One .rdf and one .xml but running the site's html thru your func it just returns the rdf. Beautiful work though. I'll definitely be using it.&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Keith</title>
			<link>http://keithdevens.com/weblog/archive/2002/Jun/03/RSSAuto-DiscoveryPHP#comment2126</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/2130#comment2126</guid>
			<pubDate>Mon, 02 Jun 2003 06:56:19 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Jason, I'll consider it, but considering that this code will be used for web-based applications, where it's not easy to pop up a dialogue box to choose which feed you want, and in the absence of further metadata (like &amp;quot;full posts&amp;quot; or &amp;quot;excerpts&amp;quot;) to allow the code to automatically choose a preferred version, it's likely that returning more than one result would be a mis-feature.&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;&lt;em&gt;However&lt;/em&gt;, the code should have predictable behavior when faced with more than one option (for instance, always return the first feed listed), a possibility I never considered in the first place. So, I should probably look at the code to see what happens and see if that's preferable.&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Jason DeFillippo</title>
			<link>http://keithdevens.com/weblog/archive/2002/Jun/03/RSSAuto-DiscoveryPHP#comment2130</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/2130#comment2130</guid>
			<pubDate>Mon, 02 Jun 2003 19:57:42 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;The need to gather all feed possibilities was what I needed in my web app so I just hacked the feature into your func so no worries :-) Thanks for the quick reply.&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Keith</title>
			<link>http://keithdevens.com/weblog/archive/2002/Jun/03/RSSAuto-DiscoveryPHP#comment2131</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/2130#comment2131</guid>
			<pubDate>Tue, 03 Jun 2003 01:20:46 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Good! Glad you were able to make due. There was &lt;em&gt;no&lt;/em&gt; way I would have gotten to it soon, so it's good that you did what you did &lt;img class=&quot;smiley&quot; src=&quot;/images/smiley_side.gif&quot; alt=&quot;Smiley&quot; /&gt;&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Nicolas</title>
			<link>http://keithdevens.com/weblog/archive/2002/Jun/03/RSSAuto-DiscoveryPHP#comment2893</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/2130#comment2893</guid>
			<pubDate>Wed, 10 Sep 2003 12:29:10 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Anyone has implemented this in ASP?&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Keith</title>
			<link>http://keithdevens.com/weblog/archive/2002/Jun/03/RSSAuto-DiscoveryPHP#comment2895</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/2130#comment2895</guid>
			<pubDate>Wed, 10 Sep 2003 17:20:14 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Dunno, I did a quick Google search just now and didn't see anything.&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by philip</title>
			<link>http://keithdevens.com/weblog/archive/2002/Jun/03/RSSAuto-DiscoveryPHP#comment3448</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/2130#comment3448</guid>
			<pubDate>Fri, 05 Dec 2003 02:01:12 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Does work for &lt;a href=&quot;http://www.upsaid.com/beyan/&quot;&gt;http://www.upsaid.com/beyan/&lt;/a&gt; see there is a RSS feed for this page at &lt;a href=&quot;http://www.101h.com/beyan/feed.xml&quot;&gt;http://www.101h.com/beyan/feed.xml&lt;/a&gt;&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Thanks!&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Max</title>
			<link>http://keithdevens.com/weblog/archive/2002/Jun/03/RSSAuto-DiscoveryPHP#comment4728</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/2130#comment4728</guid>
			<pubDate>Fri, 04 Jun 2004 19:55:29 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Keith, could you give me a live example : which values should I assign to $html and $location in order to get the feed from &lt;a href=&quot;http://www.phpheaven.net/&quot;&gt;http://www.phpheaven.net/&lt;/a&gt; ?&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;I tried this with no luck &lt;img class=&quot;smiley&quot; src=&quot;/images/smiley_frown.gif&quot; alt=&quot;Smiley frowning&quot; /&gt;&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;$location = 'http://www.phpheaven.net/';&lt;br /&gt;
$html     = getFile($location);&lt;br /&gt;
getRSSLocation($html, $location);&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Thanks,&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Max&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Keith</title>
			<link>http://keithdevens.com/weblog/archive/2002/Jun/03/RSSAuto-DiscoveryPHP#comment4729</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/2130#comment4729</guid>
			<pubDate>Fri, 04 Jun 2004 20:50:19 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Max, I tried exactly what you gave me and it worked fine, returning &lt;a href=&quot;http://www.phpheaven.net/rss1.xml&quot;&gt;http://www.phpheaven.net/rss1.xml&lt;/a&gt;.&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Note that you can use &lt;a href=&quot;http://php.net/file_get_contents&quot;&gt;file_get_contents()&lt;/a&gt; instead of getFile() if you'd like, now that there's a function built into PHP that does exactly that.&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Max</title>
			<link>http://keithdevens.com/weblog/archive/2002/Jun/03/RSSAuto-DiscoveryPHP#comment4732</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/2130#comment4732</guid>
			<pubDate>Sat, 05 Jun 2004 12:23:30 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Thanks Keith, it appeared the server I was working on had crashed... Works like a charm now ! thank you :-)&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by steve</title>
			<link>http://keithdevens.com/weblog/archive/2002/Jun/03/RSSAuto-DiscoveryPHP#comment5316</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/2130#comment5316</guid>
			<pubDate>Sat, 21 Aug 2004 07:42:10 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Keith. This kicks major ass. I love your brute-force approach. I was messing with using SAX parsers etc. What a mess. Your soloution is brief and accurate! thanks, dude.&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by some body</title>
			<link>http://keithdevens.com/weblog/archive/2002/Jun/03/RSSAuto-DiscoveryPHP#comment8493</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/2130#comment8493</guid>
			<pubDate>Wed, 19 Oct 2005 14:04:22 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;FYI, I just found your function in the code for the zfeeder web aggregator application:&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;&lt;a href=&quot;http://zvonnews.sourceforge.net/&quot;&gt;http://zvonnews.sourceforge.net/&lt;/a&gt;&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Enej</title>
			<link>http://keithdevens.com/weblog/archive/2002/Jun/03/RSSAuto-DiscoveryPHP#comment8720</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/2130#comment8720</guid>
			<pubDate>Tue, 22 Nov 2005 09:47:10 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;great job. I was woundering what happends to if the user would accually put in a url to the feed instead of the html site? &lt;br /&gt;
it would be cool if it would point you to the feed regardless. &lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Thanks. &lt;/p&gt;

</description>
		</item>
		<item>
			<title>by </title>
			<link>http://keithdevens.com/weblog/archive/2002/Jun/03/RSSAuto-DiscoveryPHP#comment9307</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/2130#comment9307</guid>
			<pubDate>Wed, 15 Mar 2006 10:10:49 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;how about trackback URL auto discovery ?&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Mark_S</title>
			<link>http://keithdevens.com/weblog/archive/2002/Jun/03/RSSAuto-DiscoveryPHP#comment9327</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/2130#comment9327</guid>
			<pubDate>Sat, 18 Mar 2006 18:46:22 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;I tried this with no luck &lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;$location = 'http://www.phpheaven.net/';&lt;br /&gt;
$html = getFile($location);&lt;br /&gt;
getRSSLocation($html, $location);&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;-------------------------&lt;br /&gt;
I'm struggling to get this to work?&lt;br /&gt;
I know its more down to my php confusion with calling&lt;br /&gt;
functions, like Max above.&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Any help would be appreciated.&lt;br /&gt;
As my searches for Auto Discovery bring me back to this&lt;br /&gt;
page time and time again.&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;-------------------------&lt;br /&gt;
Does the above code make a .php page &amp;quot;Auto Discovered&amp;quot; &lt;br /&gt;
so to speak.&lt;br /&gt;
How do i include it in my php?&lt;br /&gt;
An example would be much appreciated. &lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;My page that i would like &amp;quot;Auto Discovery&amp;quot; is php?&lt;br /&gt;
I can using the default tags on a html page,&lt;br /&gt;
get auto discovery to work.&lt;br /&gt;
But i can not get a php page to Auto discover !&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;I'm newbie / noivice level..&lt;/p&gt;

&lt;p class=&quot;st-markup&quot;&gt;Thanks in advance Mark.&lt;/p&gt;

</description>
		</item>
		<item>
			<title>by Cristian</title>
			<link>http://keithdevens.com/weblog/archive/2002/Jun/03/RSSAuto-DiscoveryPHP#comment9695</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/2130#comment9695</guid>
			<pubDate>Mon, 02 Oct 2006 15:46:25 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;I am sorry Keith Devens, but I had to modify the function to get all the feeds on the page. This is the code:&lt;/p&gt;

&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;
function&amp;#160;getRSSLocation($html,&amp;#160;$location){&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if(!$html&amp;#160;or&amp;#160;!$location){&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;return&amp;#160;false;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}else{&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;#search&amp;#160;through&amp;#160;the&amp;#160;HTML,&amp;#160;save&amp;#160;all&amp;#160;&amp;lt;link&amp;gt;&amp;#160;tags&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;#&amp;#160;and&amp;#160;store&amp;#160;each&amp;#160;link's&amp;#160;attributes&amp;#160;in&amp;#160;an&amp;#160;associative&amp;#160;array&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;preg_match_all('/&amp;lt;link\s+(.*?)\s*\/?&amp;gt;/si',&amp;#160;$html,&amp;#160;$matches);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$links&amp;#160;=&amp;#160;$matches[1];&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$final_links&amp;#160;=&amp;#160;array();&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$link_count&amp;#160;=&amp;#160;count($links);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;for($n=0;&amp;#160;$n&amp;lt;$link_count;&amp;#160;$n++){&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$attributes&amp;#160;=&amp;#160;preg_split('/\s+/s',&amp;#160;$links[$n]);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;foreach($attributes&amp;#160;as&amp;#160;$attribute){&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$att&amp;#160;=&amp;#160;preg_split('/\s*=\s*/s',&amp;#160;$attribute,&amp;#160;2);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if(isset($att[1])){&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$att[1]&amp;#160;=&amp;#160;preg_replace('/([\'&quot;]?)(.*)\1/',&amp;#160;'$2',&amp;#160;$att[1]);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$final_link[strtolower($att[0])]&amp;#160;=&amp;#160;$att[1];&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$final_links[$n]&amp;#160;=&amp;#160;$final_link;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;#now&amp;#160;figure&amp;#160;out&amp;#160;which&amp;#160;one&amp;#160;points&amp;#160;to&amp;#160;the&amp;#160;RSS&amp;#160;file&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;for($n=0;&amp;#160;$n&amp;lt;$link_count;&amp;#160;$n++){&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if(strtolower($final_links[$n]['rel'])&amp;#160;==&amp;#160;'alternate'){&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if(strtolower($final_links[$n]['type'])&amp;#160;==&amp;#160;'application/rss+xml'){&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$href&amp;#160;=&amp;#160;$final_links[$n]['href'];&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if(!$href&amp;#160;and&amp;#160;strtolower($final_links[$n]['type'])&amp;#160;==&amp;#160;'text/xml'){&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;#kludge&amp;#160;to&amp;#160;make&amp;#160;the&amp;#160;first&amp;#160;version&amp;#160;of&amp;#160;this&amp;#160;still&amp;#160;work&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$href&amp;#160;=&amp;#160;$final_links[$n]['href'];&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if($href){&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if(strstr($href,&amp;#160;&quot;http://&quot;)&amp;#160;!==&amp;#160;false){&amp;#160;#if&amp;#160;it's&amp;#160;absolute&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$full_url[]&amp;#160;=&amp;#160;$href;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}else{&amp;#160;#otherwise,&amp;#160;'absolutize'&amp;#160;it&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$url_parts&amp;#160;=&amp;#160;parse_url($location);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;#only&amp;#160;made&amp;#160;it&amp;#160;work&amp;#160;for&amp;#160;http://&amp;#160;links.&amp;#160;Any&amp;#160;problem&amp;#160;with&amp;#160;this?&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$full_url[]&amp;#160;=&amp;#160;&quot;http://$url_parts[host]&quot;;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if(isset($url_parts['port'])){&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$full_url[count($full_url)-1]&amp;#160;.=&amp;#160;&quot;:$url_parts[port]&quot;;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if($href{0}&amp;#160;!=&amp;#160;'/'){&amp;#160;#it's&amp;#160;a&amp;#160;relative&amp;#160;link&amp;#160;on&amp;#160;the&amp;#160;domain&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$full_url[count($full_url)-1]&amp;#160;.=&amp;#160;dirname($url_parts['path']);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if(substr($full_url[count($full_url)-1],&amp;#160;-1)&amp;#160;!=&amp;#160;'/'){&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;#if&amp;#160;the&amp;#160;last&amp;#160;character&amp;#160;isn't&amp;#160;a&amp;#160;'/',&amp;#160;add&amp;#160;it&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$full_url[count($full_url)-1]&amp;#160;.=&amp;#160;'/';&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$full_url[count($full_url)-1]&amp;#160;.=&amp;#160;$href;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//return&amp;#160;$full_url;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if&amp;#160;(isset($full_url))&amp;#160;{&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;return&amp;#160;$full_url;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&amp;#160;else&amp;#160;{&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;return&amp;#160;false;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;
&lt;/code&gt;</description>
		</item>
		<item>
			<title>by Jake</title>
			<link>http://keithdevens.com/weblog/archive/2002/Jun/03/RSSAuto-DiscoveryPHP#comment10011</link>
			<guid isPermaLink="false">http://keithdevens.com/weblog/2130#comment10011</guid>
			<pubDate>Wed, 07 Mar 2007 21:40:08 +0000</pubDate>
			<description>&lt;p class=&quot;st-markup&quot;&gt;Great code!  Thanks a million, and thanks to Cristian for the ability to pull the feeds in an array.&lt;/p&gt;

</description>
		</item>
	</channel>
</rss>
