Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
function uri2url($link, $base) {
if (!strpos($base, '://')) {
$base = 'http://' . $base;
}
$base = parse_url($base);
unset($base['fragment']);
if (!strpos($link, '://') and strpos($link, '@')) {
$link = $base['scheme'] . '://' . $link;
}
$link = parse_url($link);
if (isset($link['host'])) {
if ($link['host']!=$base['host']) {
return false;
}
unset($base['path'], $base['query']);
} elseif (isset($link['path']) and $link['path'][0] != '/') {
if($base['path'][strlen($base['path'])-1]=='/') {
$link['path'] = $base['path'] . $link['path'];
} else {
$path = pathinfo($base['path']);
$link['path'] = $path['dirname'] . '/' . $link['path'];
}
}
if (isset($link['path']) or isset($link['query'])) {
unset($base['query']);
}
extract($link + $base);
str_replace('/./', '/', $path);
while (strpos($path, '/../') !== false) {
$path = preg_replace('~(/[^/]+)?/\.\./~', '/', $path);
}
return $scheme . '://'
. (isset($user) ? $user . (isset($pass) ? ':' . $pass : '') . '@' : '')
. $host . $path
. (isset($query) ? '?' . $query : '')
. (isset($fragment) ? '#' . $fragment : '');
}
Приведение ссылок к абсолютному URI