我正在尝试从文本框中获取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。
有人可以帮我弄明白为什么或如何解决这个问题吗?
答案 0 :(得分:1)
问题评论中已经介绍过,但问题似乎是网址末尾的额外间距。
调用getRedirect(trim($url))
会解决问题。
最后的空间很可能变成查询字符串空间(又名%20)并更改查询字符串参数的值