2012-03-02 63 views
0

我想從文本框中獲取URL列表,每行有1個URL,每個URL都重定向,我試圖獲取它重定向到的URL。調用多個URL時,PHP cURL不起作用?

當我在一個單一的URL運行下面這段代碼,它返回重定向的URL這是我想要的......

function getRedirect($url){ 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_HEADER, true); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
    $result = curl_exec($ch); 
    $info = curl_getinfo($ch); //Some information on the fetch 
    curl_close($ch); 

    echo '<pre>'; 
    print_r($info); 
    echo '</pre>'; 

} 

$url = 'http://www.domain.com/go?a:aHR0cDovL2xldGl0Yml0Lm5ldC9kb3d'; 
getRedirect($url); 

現在我的問題是,當我嘗試在多個網址與此運行代碼...

if(isset($_POST['urls'])){ 
    $rawUrls = explode("\n", $_POST['urls']); 

    foreach ($rawUrls as $url) { 
     getRedirect($url); 
    } 
} 

當我在我的網址,而不是給我重定向的URL像我的第一個例子中的列表上運行它正確,它,而不是給我,我便走進捲曲的URL。

有人可以幫我弄清楚爲什麼或如何解決這個問題嗎?

+0

什麼呢'的var_dump($ rawUrls)'之前foreach循環節目嗎? – Ben 2012-03-02 00:18:29

+0

@ben了var轉儲只是表明我通過在像'陣列的所有URL的(10){ [0] => 串(117)「http://www.url.com/go?a:aHR0cDovL2xvc3RwaWMubmV0L2ltYWdlcy9lMDM1MzgxMjNiYWU0NGUzYjM1ODk3NjFlMWFkN2Y3Ny5qcGc= 「 [1] => 串(145) 」http://www.url.com/go?a:aHR0cDovL3NoYXJlZmxhcmUubmV0L2Rvd25sb2FkLzgyNTYyLjhkZWQwYWQyY2U4NWEzMmJlN2E0MDZlNWY0YmYvQW44OGdlbDAzLndtdi5odG1s 「 [2] => 串(61)的」 http://www.url .com/go?a:aHR0cDovL3VsLnRvL2s5Mjh5MHRu 「etc ... etc ...' – JasonDavis 2012-03-02 00:22:09

+0

好吧,如果我在瀏覽器中嘗試其中一個網址,它不會重定向,所以也許你的網址列表不正確.. ? – Ben 2012-03-02 00:47:08

回答

1

它已經在問題的評論中被覆蓋,但它似乎問題將是在URL的末尾多餘的間距。

調用getRedirect(trim($url))會解決它。

末的空間很可能變成一個查詢字符串空間(也就是20%),並改變查詢字符串參數的值