调用多个URL时,PHP cURL不起作用?

时间:2012-03-02 00:00:19

标签: php curl

我正在尝试从文本框中获取URL列表,每行有1个URL,每个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);

现在我的问题是当我尝试使用此代码在多个URL上运行它时...

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

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

当我在我的URL列表中运行它而不是像我的第一个示例那样正确地给我重定向的URL时,它反过来给了我传递给cURL的URL。

有人可以帮我弄明白为什么或如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

问题评论中已经介绍过,但问题似乎是网址末尾的额外间距。

调用getRedirect(trim($url))会解决问题。

最后的空间很可能变成查询字符串空间(又名%20)并更改查询字符串参数的值