Parser RSS con PHP

Categories: PHP - Tags: ,

Tal vez el título no te suene a nada y si te digo que un parser es un módulo que sirve para hacer el parseo imagino que suena a chino; pero es más simple de lo que parece.

El parseo sirve para convertir una entrada de texto en un conjunto de datos que pueda ser procesado, llevado al tema de RSS este no es más que un archivo XML con una estructura ya establecida y delimitada que vamos a convertir en un array para poder manejarlo con esto podriamos por ejemplo:

  • Mostrar miniposts de twitter en nuestra página web PHP
  • Mostrar noticias de una web externa en la nuestra y que se actualicen automaticamente
  • Mostrar los últimos post de cualquier blog
  • Finalmente mostrar cualquier información de RSS en nuestra página web con el formato que deseemos

Implementado el parser

Lo bueno es que no nos vamos a romper la cabeza inventando un parser sólo vamos a implementar una clase ya diseñada para dicho fin, en este caso probemos con lastRSS y quedaría nuestro código de la siguiente forma:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php

// Incluimos lastRSS.php
include './lastRSS.php';

// Damos la ruta de nuestra fuente RSS
$url_flux_rss = 'http://www.pcinpact.com/include/news.xml';
$limite       = 10; // nombre d'actus à afficher

// Creamos el objeto lastRSS
$rss = new lastRSS;

// Configuramos lastRSS
$rss->cache_dir   = './cache'; // carpeta del cache
$rss->cache_time  = 3600;      // frecuencia del cache (en segundos)
$rss->date_format = 'd/m';     // formato de fecha (basado en la funcion date() )
$rss->CDATA       = 'content'; // retiro de la etiqueta CDATA

// leemos la fuente RSS
if ($rs = $rss->get($url_flux_rss))
{
  for($i=0;$i<$limite;$i++)
  {
    // Mostramos los datos
    echo '<strong>'.$rs['items'][$i]['pubDate'].'</strong> &middot; <a href="'.$rs['items'][$i]['link'].'">'.$rs['items'][$i]['title'].'</a><br />';
  }
}
else
{
  die ('RSS no funka');
}

?>

Como vemos es muy simple ya que la clase se encarga de la parte complicada, podriamos darle el formato que quisieramos modificando esta linea:

1
echo '<strong>'.$rs['items'][$i]['pubDate'].'</strong> &middot; <a href="'.$rs['items'][$i]['link'].'">'.$rs['items'][$i]['title'].'</a><br />';

Podriamos usar h1, h2, p, ul, li… y asi darle un mejor formato al resultado obtenido.

5 Responses to Parser RSS con PHP

  1. Fernando says:

    Hola, me funciona en local pero al subirlo al servidor no va. ¿Sabes por qué podría ser?

    Gracias

  2. admin says:

    Si me dices el mensaje de error te puedo dar alguna pista, aunque suele darse que en localhost la carpeta cache es escribible pero al subirla ya no, prueba cambiándole los permisos a 777

  3. Fernando says:

    No da error, simplemente muere en ‘RSS no funka’, cambié los permisos en la carpeta cache a 777 asique eso no es.

    Creo que tiene que ver con que mi hosting no me deja abrir ficheros externos con fopen, ¿podria ser por eso?

  4. admin says:

    Podría ser eso o que no este habilitado el modulo CURL de PHP, parece que estas usando una cuenta de hosting gratuita si no lo es deberías enviar un ticket support o pensa en cambiar de hosting por no soportar opciones tan básicas.

  5. Fernando says:

    No el hosting no es gratuito, y ya es la segunda vez que quiero hacer algo y me encuentro con este problema… ¿podrias recomendarme algun servicio de hosting? Creo que al final voy a tener que mudarme.

    Y gracias por todo.

Leave a Reply

Your email address will not be published. Required fields are marked *

*


five * = 20

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>