2015-12-14 4 views
5

У меня есть новостной портал, на котором отображаются элементы RSS-каналов. Приблизительно 50 источников считываются и работают очень хорошо.RSS-Feed возвращает пустую строку

Только с источником я всегда получаю пустую строку. RSS Validator W3C может читать RSS-канал. Даже моя программа Vienna получает данные.

Что я могу сделать?

Вот мой простой код:

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

$response = file_get_contents($link); 

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

Взгляните на [как отладить файл_get_contents()] (http://stackoverflow.com/questions/6724467/why-doesnt-file-get-contents-work) – Naruto

+0

Есть ли ошибки в вашем журнале? Убедитесь, что регистрация ошибок включена. – Gordon

+2

u должен использовать User-Agent, который/feed/script проверяет его. – waza123

ответ

4

Сервер служит этот канал ожидает агент пользователя должен быть установлен. У вас, по-видимому, нет User Agent set in your php.ini, и вы не задали его при вызове file_get_contents.

Вы можете либо установить User Agent для данного конкретного запроса через 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); 

И даст вам желаемый результат.

+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; 
Смежные вопросы