2012-04-11 104 views
1
header('Access-Control-Allow-Origin: *'); 
$tmpFile = 'tmpFile.txt'; 

$val="http://rss.news.yahoo.com/rss/topstories"; 
    $curlHandle = curl_init($val); 
$filePointer = fopen($tmpFile, "w"); 
curl_setopt($curlHandle, CURLOPT_FILE, $filePointer); 
curl_exec($curlHandle); 
curl_close($curlHandle); 
fclose($filePointer); 

$linesArr = file($tmpFile); 
foreach($linesArr as $eachLine){ 
echo($eachLine); 
} 

程序應該從yahoo rss網站獲取所有材料並將它們輸出到tmpFile中。PHP中的Rss閱讀器

執行程序後,我打開了tmpFile.txt。它顯示

c1.ops.sp1.yahoo.com未壓縮/分塊週三4月11日1點46分41秒UTC 2012 - >

這看起來不正確的。我粘貼的網址http://rss.news.yahoo.com/rss/topstories有大量的材料返回。

回答

1

你需要的是curl_setopt($curlHandle, CURLOPT_ENCODING , "gzip"); .... yahoo使用compressionrss飼料...

其他信息包括。

A. CURLOPT_USERAGENT ....它很好,如果你不;噸怎樣開始看起來像垃圾郵件

B. CURLOPT_TIMEOUT ...只是爲了效益分析

C. CURLOPT_FOLLOWLOCATION ..問題Becasue與乾淨的URL和路線

工作守則

header ('Access-Control-Allow-Origin: *'); 
$tmpFile = 'out.txt'; 

$val = "http://rss.news.yahoo.com/rss/topstories"; 
$curlHandle = curl_init ($val); 
$filePointer = fopen ($tmpFile, "w"); 
curl_setopt ($curlHandle, CURLOPT_FILE, $filePointer); 
curl_setopt($curlHandle, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.3 Safari/533.2'); 
curl_setopt($curlHandle, CURLOPT_ENCODING , "gzip"); 
curl_setopt($curlHandle, CURLOPT_TIMEOUT,5); 
curl_setopt($curlHandle, CURLOPT_FOLLOWLOCATION, TRUE); 
curl_exec ($curlHandle); 
curl_close ($curlHandle); 
fclose ($filePointer); 

$linesArr = file ($tmpFile); 
foreach ($linesArr as $eachLine) { 
    echo ($eachLine); 
} 

我希望這有助於..讓我知道,如果你需要什麼更多

+1

而_what你change_?請不要傾倒「嘗試此代碼」的答案。註釋他們說什麼是不同的以及它是如何工作的。 – 2012-04-11 02:33:51

+0

+1感謝您的提示.... @Micheal ... – Baba 2012-04-11 02:34:32

+0

+1現在,這是一個值得upvoting的答案 – 2012-04-11 02:39:27

0

如果你有http與文件包支持_ * _內容:

header('Access-Control-Allow-Origin: *'); 
$tmpFile = 'out.txt'; 
$content = file_get_contents("http://rss.news.yahoo.com/rss/topstories"); 
file_put_contents($tmpFile, $content); 

echo $content;