使用PHP查找URL重定向到的位置

时间:2014-03-31 15:53:39

标签: php redirect curl file-get-contents

我希望找到一个URL重定向到的位置,目前我正在使用file_get_contents()获取网页信息但是有些页面返回301/302标题状态并且我想使用一个函数找到页面重定向到的URL;

function page_info($url) {
$fp = file_get_contents($url);
$title = preg_match("/<title>(.*)<\/title>/siU", $fp, $title_matches);
$h1 = preg_match("/<h1>(.*)<\/h1>/siU", $fp, $h1_matches);
$h2 = preg_match("/<h2>(.*)<\/h2>/siU", $fp, $h2_matches);
$meta_desc = get_meta_tags($url);
$data = array("title"=>trim(preg_replace('/\s+/', ' ', $title_matches[1])), "metadesc" => $meta_desc['description'],"h1"=>trim(preg_replace('/\s+/', ' ', $h1_matches[1])), "h2"=>trim(preg_replace('/\s+/', ' ', $h2_matches[1])));
return $data;
}

有没有办法找到重定向的网址,以便我可以在正确的URL上运行page_info()函数?

1 个答案:

答案 0 :(得分:2)

您需要使用php curl库。您可以将其设置为遵循重定向,然后使用getinfo方法查找它所需的位置。

$curl = curl_init('http://example.org/someredirect');
curl_setopt($curl, CURLOPT_POSTFIELDS, "foo");
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_POST, true);

curl_exec($curl);

if(!curl_errno($curl))
{
     $info = curl_getinfo($curl);
}

您可以将第二个参数传递给curl_getinfo方法以获取更具体的信息