如何在重定向URL后获取链接地址?
以此网址为例:http://www.boligsiden.dk/viderestilling/992cff55882a40f79e64b0a25e847a69
如何让PHP脚本回显最终的URL? (在这种情况下为http://www.eltoftnielsen.dk/default.aspx?side=sagsvisning&AutoID=125125&DID=140)
答案 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;
?>
答案 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”匹配并返回它。