RSS doesn't know a base-URL
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.
Tags


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!