View Full Version : PHP: Turn relative links into absolute ones?
xtothez
19th April 2005, 17:59
Hi,
does anyone know of a function to turn relative links in HTML code (<a href="..."></a>, <img src="...">, ...) into absolute links?
Any help is appreciated.
X
tagammeer
19th April 2005, 18:36
Try this function:
function absolute_url($txt, $base_url){
$needles = array('href="', 'src="', 'background="');
$new_txt = '';
if(substr($base_url,-1) != '/') $base_url .= '/';
$new_base_url = $base_url;
$base_url_parts = parse_url($base_url);
foreach($needles as $needle){
while($pos = strpos($txt, $needle)){
$pos += strlen($needle);
if(substr($txt,$pos,7) != 'http://' && substr($txt,$pos,8) != 'https://' && substr($txt,$pos,6) != 'ftp://' && substr($txt,$pos,9) != 'mailto://'){
if(substr($txt,$pos,1) == '/') $new_base_url = $base_url_parts['scheme'].'://'.$base_url_parts['host'];
$new_txt .= substr($txt,0,$pos).$new_base_url;
} else {
$new_txt .= substr($txt,0,$pos);
}
$txt = substr($txt,$pos);
}
$txt = $new_txt.$txt;
$new_txt = '';
}
return $txt;
}
$txt is your HTML code where you want to convert your relative links. Works like a charm for me! :)
xtothez
20th April 2005, 19:32
Hey, that's a nice one. Does exactly what I need. :D
Thanks, tagammeer (btw, what is "tagammeer"? Is that a name, or does it mean something? Just curious... :rolleyes: )
tagammeer
20th April 2005, 20:00
btw, what is "tagammeer"? Is that a name, or does it mean something? Just curious...
No, it's not a name, "Tag am Meer" is German for "a day at the beach". I hope it gets warmer soon... :cool:
Leszek
3rd October 2008, 09:13
Like for example PHP-QT.
mmrs151
24th November 2008, 19:26
Try this function:
function absolute_url($txt, $base_url){
$needles = array('href="', 'src="', 'background="');
$new_txt = '';
if(substr($base_url,-1) != '/') $base_url .= '/';
$new_base_url = $base_url;
$base_url_parts = parse_url($base_url);
foreach($needles as $needle){
while($pos = strpos($txt, $needle)){
$pos += strlen($needle);
if(substr($txt,$pos,7) != 'http://' && substr($txt,$pos,8) != 'https://' && substr($txt,$pos,6) != 'ftp://' && substr($txt,$pos,9) != 'mailto://'){
if(substr($txt,$pos,1) == '/') $new_base_url = $base_url_parts['scheme'].'://'.$base_url_parts['host'];
$new_txt .= substr($txt,0,$pos).$new_base_url;
} else {
$new_txt .= substr($txt,0,$pos);
}
$txt = substr($txt,$pos);
}
$txt = $new_txt.$txt;
$new_txt = '';
}
return $txt;
}
$txt is your HTML code where you want to convert your relative links. Works like a charm for me! :)
Hi, if you can give me an example how to use this wonderfull piece of code...
falko
25th November 2008, 17:51
$new_txt = absolute_url($txt, $base_url);
where $txt holds the text that you want to modify and $base_url is the URL of the site.
vBulletin® v3.7.4, Copyright ©2000-2009, Jelsoft Enterprises Ltd.