RSS-Feed返回一个空字符串

时间:2015-12-14 10:44:09

标签: php rss

我有一个显示RSS Feed项目的新闻门户。读取大约50个来源,效果非常好。

只有一个来源我总是得到一个空字符串。 W3C的RSS验证器可以读取RSS源。甚至我的维也纳计划都会收到数据。

我该怎么办?

这是我的简单代码:

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

$response = file_get_contents($link);

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

2 个答案:

答案 0 :(得分:4)

服务该Feed的服务器需要设置用户代理。您显然没有User Agent set in your php.ini,也没有在file_get_contents的调用中设置它。

您可以通过stream context

为此特定请求设置用户代理
echo file_get_contents(
    'http://blog.bosch-si.com/feed/',
    FALSE,
    stream_context_create(
        array(
            'http' => array(
                'user_agent' => 'php'            
            )
        )
    )
);

或全局任何http电话:

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

两者都会给你想要的结果。

答案 1 :(得分:2)

博客http://blog.bosch-si.com/feed/需要一些标题来从网站上获取内容,最好使用curl。

见下面的解决方案:

<?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;