2015-12-14 10 views
5

RSSフィード項目を表示するニュースポータルがあります。約50のソースが読み込まれ、非常にうまく動作します。RSSフィードは空の文字列を返します

ソースでのみ、私は常に空の文字列を取得します。 W3CのRSS ValidatorはRSSフィードを読むことができます。私のプログラムウィーンでさえ、データを受け取ります。

どうすればよいですか?ウェブサイトからコンテンツを取得するために、いくつかのヘッダを必要と

$link = 'http://blog.bosch-si.com/feed/'; 

$response = file_get_contents($link); 

if($response !== false) { 
    var_dump($response); 
} else { 
    echo 'Error '; 
} 
+1

[file_get_contents()]をデバッグする方法を見てください。(http://stackoverflow.com/questions/6724467/why-doesnt-file-get-contents-work) – Naruto

+0

ログには何かエラーがありますか?エラーログが有効になっていることを確認してください。 – Gordon

+2

User-Agentを使用する必要があり、/ feed/scriptがそれをチェックします。 – waza123

答えて

4

そのフィードを提供するサーバはユーザエージェントが設定されることを期待します。あなたは明らかにUser Agent set in your php.iniを持っておらず、file_get_contentsへの呼び出しでそれを設定していません。あなたはstream contextを通じて、この特定の要求のためのユーザーエージェントを設定することができ

次のいずれか

任意のHTTP呼び出しのための
echo file_get_contents(
    'http://blog.bosch-si.com/feed/', 
    FALSE, 
    stream_context_create(
     array(
      'http' => array(
       'user_agent' => 'php'    
      ) 
     ) 
    ) 
); 

またはグローバル:

ini_set('user_agent', 'php'); 
echo file_get_contents($link); 

どちらも、あなたの望ましい結果が得られます。

+0

より効果的です:)完璧な答え –

2

ブログhttp://blog.bosch-si.com/feed/、同じのためのより良い利用のカール:

は、ここに私の簡単なコードです。

は解決策以下を参照してください。

<?php 
$link = 'http://blog.bosch-si.com/feed/'; 
$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, $link); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: blog.bosch-si.com', 'User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36')); 
$result = curl_exec($ch); 
if(! $result) 
{ 
    echo curl_error($ch); 

} 
curl_close($ch); 
echo $result; 
関連する問題