获取CURL模拟POST提交之后重定向的网址

CURL模拟POST提交之后,有时候返回的网页会转到重定向的网址,如何获取这个网址呢?

首先,要设置

//允许curl提交后,网页重定向 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); //将curl提交后的header返回 curl_setopt($ch, CURLOPT_HEADER, 1);

 

 

然后,利用老外在网络版的PHP官方手册的回复中给出了一个很有用的函数将header里的各个属性分解成数组:

function parse_response($response){ /* ***original code extracted from examples at ***http://www.webreference.com/programming/php/cookbook/chap11/1/3.html ***returns an array in the following format which varies depending on headers returned [0] => the HTTP error or response code such as 404 [1] => Array ( [Server] => Microsoft-IIS/5.0 [Date] => Wed, 28 Apr 2004 23:29:20 GMT [X-Powered-By] => ASP.NET [Connection] => close [Set-Cookie] => COOKIESTUFF [Expires] => Thu, 01 Dec 1994 16:00:00 GMT [Content-Type] => text/html [Content-Length] => 4040 ) [2] => Response body (string) */ list($response_headers,$response_body) = explode("/r/n/r/n",$response,2); $response_header_lines = explode("/r/n",$response_headers); // first line of headers is the HTTP response code $http_response_line = array_shift($response_header_lines); if (preg_match('@^HTTP/[0-9]/.[0-9] ([0-9]{3})@',$http_response_line, $matches)) { $response_code = $matches[1]; } // put the rest of the headers in an array $response_header_array = array(); foreach ($response_header_lines as $header_line) { list($header,$value) = explode(': ',$header_line,2); $response_header_array[$header] = $value; } return array($response_code,$response_header_array,$response_body); }

 

你可能感兴趣的:(PHP之旅)