function rel2abs($rel, $base) { $base1=parse_url($url); $url1=$base1['host']; if(mb_strpos("-".$rel,$base)!=false) return $rel; if(parse_url($rel, PHP_URL_SCHEME) != '') if(mb_strpos("-".$rel,$url1)!=false) return $rel; if(mb_strpos("-".$base,"http://")==false) { $base="http://".$base; } /* return if already absolute URL */ if (parse_url($rel, PHP_URL_SCHEME) != '') { return $rel; } /* queries and anchors */ if ($rel[0]=='#' || $rel[0]=='?') { if(mb_strpos("-".$base.$rel,"http://")==false) return "http://".$base.$rel; return $base.$rel; } /* parse base URL and convert to local variables: $scheme, $host, $path */ extract(parse_url($base)); /* remove non-directory element from path */ $path = preg_replace('#/[^/]*$#', '', $path); /* destroy path if relative url points to root */ if ($rel[0] == '/') $path = ''; /* dirty absolute URL */ $abs = "$host$path/$rel"; /* replace '//' or '/./' or '/foo/../' with '/' */ $re = array('#(/\.?/)#', '#/(?!\.\.)[^/]+/\.\./#'); for($n=1; $n>0; $abs=preg_replace($re, '/', $abs, -1, $n)) {} /* absolute URL is ready! */ //return $scheme.'://'.$abs; if(mb_strpos("-".$abs,"http://")==false) return "http://".$abs; return $abs; }