PHP:从重定向的URL获取链接地址

时间:2014-10-05 17:38:49

标签: php url redirect hyperlink

如何在重定向URL后获取链接地址?

以此网址为例:http://www.boligsiden.dk/viderestilling/992cff55882a40f79e64b0a25e847a69

如何让PHP脚本回显最终的URL? (在这种情况下为http://www.eltoftnielsen.dk/default.aspx?side=sagsvisning&AutoID=125125&DID=140

2 个答案:

答案 0 :(得分: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; 
?>

enter link description here

答案 1 :(得分: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”匹配并返回它。