CURL

2012-04-14 11 views
0

에 의해 게시 후 새로운 URL을 받기는 예입니다.CURL

그것은 어떻게 새로운 URL을 얻을이

http://www.vietbando.com/maps/#t=1&sk=258+lý+Thường+Kiệt&l=4&kv=15.0132985,106.744091 

같은 새로운 URL로 변경?

+1

여기에 컬 코드가 있습니까 ??? – Baba

답변

1

리디렉션을 언급하는 경우 새 URL은 항상 응답의 Location 헤더에 있어야합니다.

귀하의 컬 요청에 헤더를 포함 시키려면 curl_set_opt을 통해 CURLOPT_HEADER 옵션을 설정하십시오.

실제 URL을 가져 오는 대신 다음 URL로 이동/검색하는 데 관심이 있다면 FOLLOW_REDIRECTS 설정을 사용할 수 있습니다.

마지막으로 두 가지 호출을 넘어서 HTTP 작업을 수행하는 경우 PHP 라이브러리가 고문 인 HTTP 라이브러리를 사용하는 것이 좋습니다. Guzzle, Httpful 또는 Requests을 참조하십시오.

+0

CURLOPT_HEADER 및 FOLLOW_REDIRECTS를 시도했지만 작동하지 않습니다. 이 링크를 사용해보십시오 로 변경됩니다. # t = 1 & sk = 258 + lươg + Kiệt & l = 6 & kv = 15.0132985,106.744091> –

1

그런 경우 url을 잡기 위해 응답 헤더를 구문 분석 할 수 있습니다. 이 코드를 사용하여이 작업을 수행해야합니다.

$ch_url = curl_init(); 
curl_setopt($ch_url, CURLOPT_URL, 'http://www.example.com/)'; //your first url 
curl_setopt($ch_url, CURLOPT_USERAGENT, 'AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.39 Safari/530.5'); 
curl_setopt($ch_url, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch_url, CURLOPT_HEADER, 1); 
curl_setopt($ch_url, CURLOPT_NOBODY, 1); //we don't need to recieve the body of response 
$headers = curl_exec($ch_url); 
curl_close ($ch_url); 

$pattern = '`.*?((http)://[\w#$&+,\/:;[email protected]]+)[^\w#$&+,\/:;[email protected]]*?`i'; //this regexp finds your url 
if (preg_match_all($pattern,$headers,$matches)) 
    $url = $matches[1][0]; //your second url 
+0

나는 잘 이해하지 못한다. 이것은 내가하는 코드이지만 새로운 URL을 반환하지는 않습니다. $ ch_url = curl_init(); curl_setopt ($ ch_url, CURLOPT_URL, 'http://www.vietbando.com/maps/#t=1&sk=258+l++Thường+Kiệt'); // 첫 번째 URL curl_setopt ($ ch_url, CURLOPT_USERAGENT, 'AppleWebKit/530.5 (Gecko와 같은 KHTML) Chrome/2.0.172.39 Safari/530.5'); curl_setopt ($ ch_url, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ ch_url, CURLOPT_HEADER, 1); curl_setopt ($ ch_url, CURLOPT_NOBODY, 1); // 응답 본문을 수신 할 필요가 없습니다. $ headers = curl_exec ($ ch_url); curl_close ($ ch_url); –

+0

$ pattern = ''. *? ((http) : // [\ w # $ &+,\/:; =? @ .-] +) [^ \ w # $ &+,\/:; =? @ .-] *?'i'; //이 prege_match_all ($ 패턴, $ 헤더, $ 일치)) { $ url = $ $ [1] [0] 일치하는 경우이 regexp는 귀하의 URL을 찾습니다 ; // 두 번째 url echo $ url; } –

+0

그래서이 코드는 cURL을 통해 한 페이지로 요청하면 다른 페이지로 리디렉션됩니다 (302 또는 301 리디렉션). 귀하의 링크 (http://www.vietbando.com/maps/#t=1&sk=258+l++Thường+Kiệt)가 어떤 페이지로도 리디렉션되지 않습니다. 그것이 새로운 링크를 얻을 수없는 이유입니다. 단지 존재하지 않습니다. 두 번째 링크가 어떻게 나타나는지 더 명확하게 설명하십시오. 나는 이것을 이해하지 못한다 : '나는 폼이 게시 될 때.' – kpotehin