0

これは例です:

元のURLはhttp://www.vietbando.com/maps/#t=1&sk=258+lý+Thường+Kiệt

フォームが投稿されたとき。

このように新しいURLに変わります

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

新しい URL を取得するには?

4

2 に答える 2

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#$&+,\/:;=?@.-]+)[^\w#$&+,\/:;=?@.-]*?`i'; //this regexp finds your url
if (preg_match_all($pattern,$headers,$matches))
    $url = $matches[1][0]; //your second url
于 2012-04-14T14:04:10.707 に答える
1

リダイレクトを参照している場合、新しい URL は常にLocation応答のヘッダーにある必要があります。

curl リクエストに含まれるヘッダーを取得するには、 でCURLOPT_HEADERオプションを設定しますcurl_set_opt

実際の URL を取得するのではなく、次の URL に移動したり、次の URL を取得したりすることに関心がある場合は、単にFOLLOW_REDIRECTS設定を使用できます。

最後に、いくつかの呼び出しを超えて何らかの種類の HTTP 作業を行っている場合は、HTTP ライブラリを使用することを強くお勧めします (PHP cURL は拷問であるため)。GuzzleHttpful、またはRequestsを参照してください。

于 2012-04-14T13:59:02.097 に答える