2011-05-30 95 views
6

file_get_contents()不用于短网址读取数据 示例:file_get_contents()函数用于短网址

  • http://wp.me/pbZy8-1WM,
  • http://bit.ly/ d00E2C

请帮我处理这个问题。或者是否有任何CURL函数来处理上面的链接?

+0

你为什么标记这个卷曲? – erisco 2011-05-30 05:07:51

+0

@erisco如果使用带有URL的'file_get_contents',则它会按照cURL获取数据 – 2011-05-30 05:09:18

+0

根据http://php.net/manual/en/wrappers.http.php支持HTTP重定向。 – erisco 2011-05-30 05:09:55

回答

6

这一般工作正常。如果你发现它没有做正确的事情,你可以明确地使用流上下文:

$url = "http://bit.ly/d00E2C"; 
$context = stream_context_create(array('http' => array('max_redirects' => 5))); 
$val = file_get_contents($url, false, $context); 

应该这样做。无需为此触摸CURL。

+0

我偷走了你'max_redirects'的贡献......不确定我对此的看法。你可以合并Stackoverflow的答案吗? – erisco 2011-05-30 05:29:08

+0

呵呵。给我一票,我们甚至会打电话给它。 – Femi 2011-05-30 05:41:39

+0

这是一个奇怪的交易,但没关系。 – erisco 2011-05-30 05:43:07

1

什么可以被使用curl与CURLOPT_FOLLOWLOCATION设置为True做:

$ch = curl_init("http://bit.ly/d00E2C"); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
$result = curl_exec($ch); 
curl_close($ch); 

echo $result; 
4

在我的机器,我不能复制你的问题。我按预期收到该页面。但是,如果问题是重定向,这可能会解决您的问题。

<?php 
$opts = array(
    'http' => array(
     'follow_location' => 1, 
     'max_redirects' => 20 
    ) 
); 
$context = stream_context_create($opts); 
echo file_get_contents('http://wp.me/pbZy8-1WM', false, $context); 

我想有可能是一个指令,切换下面的重定向,但我还没有找到它。我会编辑我的答案应该是我。