Leitor RSS em PHP

PHP:
 //Feed URLs       
 $feeds = array(           
       "http://feeds.feedburner.com/iol/maisfutebol"
 );   
             
//Read each feeds items       
 $entries = array();        

 foreach($feeds as $feed) {
        $xml = simplexml_load_file($feed);                        
        $entries = array_merge($entries, $xml->xpath("//item"));
        }               

 //Sort feed entries by pubDate        
usort($entries, function ($feed1, $feed2) {            
         return strtotime($feed2->pubDate) - strtotime($feed1->pubDate);        
});

será por causa do meu código?

É que o meu código com os RSS "normais" funciona.
 
No teu código não tens o parâmetro format. Experimentaste das duas maneiras? Será que tens de fazer escaping do ponto de interrogação ou passá-lo de alguma outra maneira como parâmetro GET?
 
outra coisa que não consigo fazer é: quando um dos rss listados rebenta o site todo rebenta. Que tipo de protecção devo meter? Já tentei um try-catch, mas não funcionou.
 
outra coisa que não consigo fazer é: quando um dos rss listados rebenta o site todo rebenta. Que tipo de protecção devo meter? Já tentei um try-catch, mas não funcionou.

o erro que aparece quando rebenta é: "Fatal error: Call to a member function xpath() on a non-object in index.php on line 70"
 
Não estou seguro se entendi o problema, mas se o problema é a página aparecer em branco, parece-me normal dado que não tens nenhum output da variável $entries;

Tenta o seguinte:

echo '<pre>';
print_r($entries);
echo '</pre>';
 
Não estou seguro se entendi o problema, mas se o problema é a página aparecer em branco, parece-me normal dado que não tens nenhum output da variável $entries;

Tenta o seguinte:

echo '<pre>';
print_r($entries);
echo '</pre>';

Eu tenho esse output :), mas apenas apresentei aqui o código que tenho dúvidas.

Tenho dois problemas distintos:

1º - estou a ler vários RSS e quando um deles rebenta, rebenta a página toda e dá o seguinte erro: "Fatal error: Call to a member function xpath() on a non-object in index.php on line 70". Como consigo proteger o código que aí apresento para isto não rebentar?

2º - outro problema é com o seguinte RSS (ou outro qualquer semelhante): http://feeds.feedburner.com/DragoAtMorteFcportoOMelhorClubePortugus
a questão aqui é que não há nada no XML com <item> e por isso não me aparece nada desse RSS.
 
Aposto que a variavél xml está a null. Por isso é que lança o fatal error. Acho que não é possivel apanhar "fatal error" por isso verifica se a variavél $xml é diferente de null antes de chamar o método xpath().
 
Aposto que a variavél xml está a null. Por isso é que lança o fatal error. Acho que não é possivel apanhar "fatal error" por isso verifica se a variavél $xml é diferente de null antes de chamar o método xpath().

tenho de fazer uns testes para ver se a variavel $xml vem mesmo a null ou se vem com 'lixo' lá dentro.
 
PHP:
//Feed URLs       
 $feeds = array(           
       "http://feeds.feedburner.com/iol/maisfutebol"
 );   
             
//Read each feeds items       
 $entries = array();        

 foreach($feeds as $feed) {
        $xml = simplexml_load_file($feed);
        if ($xml !== false) {
            $entries = array_merge($entries, $xml->xpath("//item"));
        }
 }

 //Sort feed entries by pubDate        
usort($entries, function ($feed1, $feed2) {            
         return strtotime($feed2->pubDate) - strtotime($feed1->pubDate);        
});

Segundo os docs http://php.net/manual/en/function.simplexml-load-file.php a função retorna falso quando não consegue fazer parse do XML.
 
PHP:
foreach($feeds as $feed) {
    $xml = simplexml_load_file($feed);    
    if ($xml != null){         
          $entries = array_merge($entries, $xml->xpath("//item"));    
     } 
}

alterei o código para isto e assim já não rebenta :)

em relação à 2ª dúvida ainda não tenho novidades.
 
Back
Topo