PHP: получить адрес ссылки из перенаправленного URL

Как я могу получить адрес ссылки после того, как URL был перенаправлен?

Возьмем для примера этот URL: http://www.boligsiden.dk/viderestilling/992cff55882a40f79e64b0a25e847a69

Как сделать так, чтобы PHP-скрипт отображал окончательный URL-адрес? (http://www.eltoftnielsen.dk/default.aspx?side=sagsvisning&AutoID = 125125&DID = 140 в этом случае)

0

Решение

Примечание. Следующее решение не идеально для ситуаций с интенсивным движением.

$url = 'http://www.boligsiden.dk/viderestilling/992cff55882a40f79e64b0a25e847a69';

file_get_contents($url);
preg_match('/(Location:|URI:)(.*?)\n/', implode("\n", $http_response_header), $matches);

if (isset($matches[0]))
{
echo $matches[0];
}

Вот что происходит: file_get_contents () перенаправляет и загружает целевой веб-сайт, но записывает исходный заголовок ответа в $ http_response_header.

preg_match пытается найти первое совпадение «Location: x» и возвращает его.

0

Другие решения

использовать этот

<?php
$name="19875379";
$url = "http://www.ikea.co.il/default.asp?strSearch=".$name;

$ch = curl_init();
$timeout = 0;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$header = curl_exec($ch);
$redir = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
//print_r($header);

$x = preg_match("/<script>location.href=(.|\n)*?<\/script>/", $header, $matches);
$script = $matches[0];
$redirect = str_replace("<script>location.href='", "", $script);
$redirect = "http://www.ikea.co.il" . str_replace("';</script>", "", $redirect);

echo $redirect;
?>

введите описание ссылки здесь

0

По вопросам рекламы [email protected]