PHP код перевода относительного пути в абсолютный путь

Автор: | 15.04.2016
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;
}

 

Раздел: PHP