You are hereHome / Blogging / RSS doesn't know a base-URL

RSS doesn't know a base-URL


By Gerd Riesselmann - Posted on 04 November 2005

Writing about the base tag and stupid search engines I completly forgot that RSS doesn't accept relative links - for a good reason of course. This caused at least Bloglines to get a little bit wild about my feed and I'm sorry for the inconveniences this may have caused.

Anyhow, I decided to get rid of the problem once and for all by turning relative links into absolute when writing the feed. This is how I did it:

<?php
function relToAbs($text, $base)
{
  if (empty(
$base))
    return
$text;
 
// base url needs trailing /
 
if (substr($base, -1, 1) != "/")
   
$base .= "/";
 
// Replace links
 
$pattern = "/<a([^>]*) " .
            
"href=\"[^http|ftp|https]([^\"]*)\"/";
 
$replace = "<a\${1} href=\"" . $base . "\${2}\"";
 
$text = preg_replace($pattern, $replace, $text);
 
// Replace images
 
$pattern = "/<img([^>]*) " .
            
"src=\"[^http|ftp|https]([^\"]*)\"/";
 
$replace = "<img\${1} src=\"" . $base . "\${2}\"";
 
$text = preg_replace($pattern, $replace, $text);
 
// Done
 
return $text;
}
?>

Just a quick shot, but it seems to work.

I noticed that I'm having the same problem.
Where did you use this code? Thanks!

I use it within my TotalFeeds module :-)

Great solve, thanks!