2011-05-30 38 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); 

我想有可能是一個指令,切換下面的重定向,但我還沒有找到它。我會編輯我的答案應該是我。