我試圖讓curl遵循重定向,但我無法完全正確地工作。我有一個字符串,我想將其作爲GET參數發送到服務器並獲取生成的URL。如何找到我將使用捲曲重定向的位置?
例子:
字符串= 狗頭害蟲
URL = www.wowhead.com/search?q=Kobold+Worker
如果你去那個網址它會將您重定向到「www.wowhead.com/npc=257」。我想讓curl將這個URL返回給我的PHP代碼,這樣我就可以提取「npc = 257」並使用它。
當前代碼:
function npcID($name) {
$urltopost = "http://www.wowhead.com/search?q=" . $name;
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1");
curl_setopt($ch, CURLOPT_URL, $urltopost);
curl_setopt($ch, CURLOPT_REFERER, "http://www.wowhead.com");
curl_setopt($ch, CURLOPT_HTTPHEADER, Array("Content-Type:application/x-www-form-urlencoded"));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
return curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
}
然而,這將返回www.wowhead.com/search?q=Kobold+Worker而不是www.wowhead.com/npc=257。
我懷疑在外部重定向發生之前PHP會返回。我怎樣才能解決這個問題?
這是「捲曲跟隨重定向」的主要問題之一。要使用'curl'命令自動跟蹤重定向,請傳遞'-L'或'--location'標誌。例如。 'curl -L http:// example.com /' – 2013-09-09 19:09:15