Leer RSS en PHP

El otro día me llamó un cliente diciendo que necesitaba poder mostrar en su web las últimas noticias económicas de un periódico digital. La verdad que yo había trabajado poco con RSS pero en esto hay que ser valiente y sabiendo que es algo relativamente común me puse a buscar como conseguir leer RSS en PHP. En solo unos clicks ya tenía información suficiente como para hacerme una idea, encontré algunos scripts… pero decidí hacer uno propio para poder modificarlo de forma sencilla llegado el caso, e incluso hice un script para WordPress, pero eso es otra historia que os contare próximamente.

La cuestión está, en mucho más que el saber como tomar la página de RSS de la web, cosa que puede dar para otra entrada, en cómo tomar la información y mostrarla por pantalla, de modo que vamos a ver el código para hacerlo en muy pocas líneas…

<?php
$articulos = simplexml_load_string(file_get_contents('http://cincodias.com/tag/rss/tributos/a'));
$num_noticia=1;
$max_noticias=10;
echo "<h2>{$articulos->channel->title}</h2>";
foreach($articulos->channel->item as $noticia){ 
	$fecha = date("d/m/Y - H:i", strtotime($noticia->pubDate));?>
    <article>
        <h5><a href="<?php echo $noticia->link; ?>"><?php echo $noticia->title; ?></a></h5>
        <?php echo $fecha; ?>
        <?php echo $noticia->description; ?>
    </article>
    <?php $num_noticia++; 
    if($num_noticia > $max_noticias){
        break;
    }
}?>

Sencillo ¿verdad?, aun a así vamos a analizar un poco este código para poder entenderlo…

  • Lo primero que hacemos es guardar en un objeto el xml que nos envía el RSS poniendo la URL del sitio del que vamos a tomar la información
  • Creamos dos variables;
    • $num_noticia que inicializa la variable en 1
    • $max_noticias donde indicamos el número de noticias que queremos mostrar
  • Mostramos el nombre que tiene el canal RSS según su creador por medio de las propiedades del objeto. Esto no es necesario, podemos poner el nombre que queramos directamente, pero es interesante verlo para poder ir viendo las propiedades.
  • Creamos un bucle donde tomamos cada propiedad del objeto y la guardamos en $noticia para poder trabajar con ella
  • Durante el bucle vamos recorriendo algunas propiedades y mostrandolas por pantalla dentro de una etiqueta article.
    • Le damos formato a la fecha para publicarla luego en el artículo, por medio del campo pubDate
    • Creamos el enlace a través de link y envolvemos el título que es capturado por title, haciendo de esta manera que al hacer click en el título de la noticia nos lleve a la noticia.
    • En la línea 10 hacemos que se vea la fecha y la hora de publicación, que ya teníamos guardada de antes.
    • En la línea 11 y para terminar el artículo tomamos la descripción por medio de description.
  • Finalmente sumamos uno al número de noticia y se compara con una condicional que mira si nos hemos salido del número de noticias máximas, en cuyo caso rompe el bucle y se sigue ejecutando el código.

Se puede observar el código fuente en XML del RSS en cuestión que estamos capturando y de ese modo obtener algunos campos adicionales como el autor, comentarios… dependiendo de aquello que queramos mostrar.

Como conclusión, creo que obtener buenos resultados al leer RSS en PHP es muy sencillo, enriqueciendo el contenido de páginas, creandoles dinamismo y vistosidad si se le añade un poquito de CSS (cosa que aquí no hemos hecho, pero si le hice al cliente).