PHP конвертировать все ссылки в абсолютные URL - PullRequest
5 голосов
/ 15 февраля 2010

Я пишу сканер сайта на php, и у меня уже есть код, который может извлечь все ссылки с сайта. Проблема: сайты используют комбинацию абсолютных и относительных URL. Примеры (http заменен на hxxp, поскольку я не могу публиковать гиперссылки):

hxxp: //site.com/

site.com

site.com / index.php

hxxp: //site.com/hello/index.php

/ привет / index.php

hxxp: //site2.com/index.php

site2.com / index.php

У меня нет контроля над ссылками (если они абсолютные / относительные), но мне нужно следовать по ним. Мне нужно преобразовать все эти ссылки в абсолютные URL-адреса. Как мне сделать это в php?

1 Ответ

5 голосов
/ 15 февраля 2010

Вот начало

// Your crawler was sent to this page.
$url = 'http://example.com/page';

// Example of a relative link of the page above.
$relative = '/hello/index.php';

// Parse the URL the crawler was sent to.
$url = parse_url($url);

if(FALSE === filter_var($relative, FILTER_VALIDATE_URL))
{
    // If the link isn't a valid URL then assume it's relative and
    // construct an absolute URL.
    print $url['scheme'].'://'.$url['host'].'/'.ltrim($relative, '/');
}

Взгляните на http_build_url метод как еще один способ создания абсолютной привязки.

...