에 의해 게시 후 새로운 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로 변경?
에 의해 게시 후 새로운 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로 변경?
리디렉션을 언급하는 경우 새 URL은 항상 응답의 Location
헤더에 있어야합니다.
귀하의 컬 요청에 헤더를 포함 시키려면 curl_set_opt
을 통해 CURLOPT_HEADER
옵션을 설정하십시오.
실제 URL을 가져 오는 대신 다음 URL로 이동/검색하는 데 관심이 있다면 FOLLOW_REDIRECTS
설정을 사용할 수 있습니다.
마지막으로 두 가지 호출을 넘어서 HTTP 작업을 수행하는 경우 PHP 라이브러리가 고문 인 HTTP 라이브러리를 사용하는 것이 좋습니다. Guzzle, Httpful 또는 Requests을 참조하십시오.
CURLOPT_HEADER 및 FOLLOW_REDIRECTS를 시도했지만 작동하지 않습니다. 이 링크를 사용해보십시오
그런 경우 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
나는 잘 이해하지 못한다. 이것은 내가하는 코드이지만 새로운 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); –
$ pattern = ''. *? ((http) : // [\ w # $ &+,\/:; =? @ .-] +) [^ \ w # $ &+,\/:; =? @ .-] *?'i'; //이 prege_match_all ($ 패턴, $ 헤더, $ 일치)) { $ url = $ $ [1] [0] 일치하는 경우이 regexp는 귀하의 URL을 찾습니다 ; // 두 번째 url echo $ url; } –
그래서이 코드는 cURL을 통해 한 페이지로 요청하면 다른 페이지로 리디렉션됩니다 (302 또는 301 리디렉션). 귀하의 링크 (http://www.vietbando.com/maps/#t=1&sk=258+l++Thường+Kiệt)가 어떤 페이지로도 리디렉션되지 않습니다. 그것이 새로운 링크를 얻을 수없는 이유입니다. 단지 존재하지 않습니다. 두 번째 링크가 어떻게 나타나는지 더 명확하게 설명하십시오. 나는 이것을 이해하지 못한다 : '나는 폼이 게시 될 때.' – kpotehin
여기에 컬 코드가 있습니까 ??? – Baba