Я пишу веб-сайт искателя в php, и у меня уже есть код, который может извлекать все ссылки с сайта. Проблема: сайты используют комбинацию абсолютных и относительных URL-адресов. Примеры (http заменен на hxxp, поскольку я не могу отправлять гиперссылки):
hxxp: //site.com/
site.com
site.com/index.php
hxxp: //site.com/hello/index.php
/hello/index.php
hxxp: //site2.com/index.php
site2.com/index.php
Я не контролирую ссылки (если они абсолютные / относительные), но мне нужно следовать им. Мне нужно преобразовать все эти ссылки в абсолютные URL. Как это сделать в php?
Вот начало
// 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 как еще один способ создания абсолютного якоря.