function in_string($needle, $haystack, $insensitive = 0)
{
if ($insensitive)
return (false !== stristr($haystack, $needle)) ? true : false;
else
return (false !== strpos($haystack, $needle)) ? true : false;
}
//компоновка абсолютного и относительного путей
function getHost($base, $path)
{
$old = $path;
$temp1 = explode("/", $base);
if ($temp1[count($temp1)-1]!="")
if (in_string(".", $temp1[count($temp1)-1])==false)
$base = $base."/";
$temp1 = explode("/", $path);
if ($temp1[count($temp1)-1]!="")
if (in_string(".", $temp1[count($temp1)-1]) == false)
$path = $path."/";
$base = $base." ";
$path = $path." ";
$base = @parse_url($base);
$path = @parse_url($path);
if (isset($path["host"]))
return trim($old);
if ($base["path"][0]!="/")
$base["path"] = "/".$base["path"];
if ($path["path"][0]!="/")
$path["path"] = "/".$path["path"];
$base["path"] = pathinfo($base["path"]);
$path["path"] = pathinfo($path["path"]);
if ($base["path"]["dirname"]=="\\") $base["path"]["dirname"] = "";
if ($path["path"]["dirname"]=="\\") $path["path"]["dirname"] = "";
while (substr($path["path"]["dirname"], 0, 3)=="/..")
{
$path["path"]["dirname"] = substr($path["path"]["dirname"], 3, strlen($path["path"]["dirname"])-3);
if (substr_count($base["path"]["dirname"], "/")>1)
$base["path"]["dirname"] = substr($base["path"]["dirname"], strpos($base["path"]["dirname"], "/", 1), strlen($base["path"]["dirname"])-strpos($base["path"]["dirname"], "/", 1));
else
$base["path"]["dirname"] = "";
}
if (trim($path["path"]["basename"])=="")
$url = trim($base["scheme"])."://".trim($base["host"]).trim($base["path"]["dirname"]).trim($path["path"]["dirname"]);
else
$url = trim($base["scheme"])."://".trim($base["host"]).trim($base["path"]["dirname"]).trim($path["path"]["dirname"])."/".trim($path["path"]["basename"]);
$url = str_replace("/./", "/", $url);
return trim($url);
}