2012-03-02 72 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%),并改变查询字符串参数的值