kirill_782
@kirill_782
Днем я Маринетт

Как преобразовать относительный в абсолютный url?

Есть в php функция, которая отдаст абсолютный uri, имея другой абсолютный и относительный?
  • Вопрос задан
  • 275 просмотров
Решения вопроса 2
artem78
@artem78
Заканчивающий разработчик
Встроенной нет. Можно написать самому, используя parse_url, либо взять готовую библиотеку https://github.com/monkeysuffrage/phpuri.
Ответ написан
Комментировать
Недавно использовал такую функцию:
function rel2abs($rel, $base)
{
    /* return if already absolute URL */
    if (parse_url($rel, PHP_URL_SCHEME) != '') return $rel;

    /* queries and anchors */
    if ($rel[0]=='#' || $rel[0]=='?') 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;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы