我矿从RSS链接数据,并得到了一堆喜欢的网址:
http://feedproxy.google.com/~r/electricpig/~3/qoF8XbocUbE/
....如果我访问我的网页浏览器的链接,我重定向到这样的:
http://www.electricpig.co.uk/stuff 。
有没有在PHP的方式来写,给定一个URL时,“一个”,用户重定向到URL“B”,将返回的URL“B”的功能?
我矿从RSS链接数据,并得到了一堆喜欢的网址:
http://feedproxy.google.com/~r/electricpig/~3/qoF8XbocUbE/
....如果我访问我的网页浏览器的链接,我重定向到这样的:
http://www.electricpig.co.uk/stuff 。
有没有在PHP的方式来写,给定一个URL时,“一个”,用户重定向到URL“B”,将返回的URL“B”的功能?
干得好:
function getRedirect($oldUrl) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $oldUrl);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$res = curl_exec($ch);
$newUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
curl_close($ch);
return $newUrl;
}
该功能需要卷曲,并且利用了CURLINO_EFFECTIVE_URL
。 你可以看看它在PHPDoc的位置
编辑:
如果您确信OLDURL不通过JavaScript重定向到NEWURL,那么你也可避免取的NEWURL的机身采用
curl_setopt($ch, CURLOPT_NOBODY, TRUE); // remove body
放之前上面的行$res = curl_exec($ch);
在功能getRedirect
以成功者更快的执行速度。
public function getRedirect($url) {
$headers = get_headers($url, 1);
if (array_key_exists("Location", $headers)) {
$url = getRedirect($headers["Location"]);
}
return $url;
}