PHP 取302跳转后真实 URL 的两种方法

来源:互联网 发布:大数据培训骗局 编辑:程序博客网 时间:2024/05/18 01:58
  1. 第一种,CURL形式【感觉处理略慢,代码偏多】
$url = '将跳转的URL';$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_VERBOSE, true);curl_setopt($ch, CURLOPT_HEADER, true);curl_setopt($ch, CURLOPT_NOBODY, true);curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_TIMEOUT, 20);curl_setopt($ch, CURLOPT_AUTOREFERER, true);curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);// $ret 返回跳转信息$ret = curl_exec($ch);// $info 以 array 形式返回跳转信息$info = curl_getinfo($ch);// 跳转后的 URL 信息$retURL = $info['url'];// 记得关闭curlcurl_close($ch);


  1. 第二种,使用 get_headers

(PHP 5, PHP 7)
get_headers — 取得服务器响应一个 HTTP 请求所发送的所有标头

参数 值 url 必需。目标URL format 可选。如果为1,则解析相应的信息并设定数组键名。


参考资料:PHP: get_headers - 手册

$headers = get_headers('将跳转的URL');if ($headers && $headers['Location']){    echo $headers['Location'];}

由此可见,仅有一次 302 跳转的情况下,使用【方法2】会比【方法1】更高效。

0 1
原创粉丝点击