2
 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に出力することになっています。

プログラムを実行した後、tmpFile.txtを開きました。それが示している

c1.ops.sp1.yahoo.com非圧縮/チャンク水2012年4月11日01:46:41UTC->

これは正しく見えません。URLhttp ://rss.news.yahoo.com/rss/topstoriesを貼り付けました。たくさんの資料が返されました。

4

2 に答える 2

1

必要なのは....curl_setopt($curlHandle, CURLOPT_ENCODING , "gzip");フィードのyahoo使用...compressionrss

追加情報が含まれます。

A CURLOPT_USERAGENT.....スパムのように見え始めるのは良いことではありません。

B CURLOPT_TIMEOUT....効率のためだけに

C CURLOPT_FOLLOWLOCATION...クリーンな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);
}

これがお役に立てば幸いです..もっと必要な場合はお知らせください

于 2012-04-11T02:32:25.880 に答える
0

httpfile_*_contents でラッパーをサポートしている場合:

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;
于 2012-04-11T02:35:41.073 に答える