Leer RSS desde PHP

Domingo 8 de abril de 2007, por Horacio González Diéguez

Dado que el método "xmlhttprequest" no se puede utilizar para que el navegador recoja información de un documento xml de un dominio ajeno. Se me ocurrio que para compartir RSS resultaría útil recurrir a un script de servidor ya que este puede hacer cualquier clase de llamadas. (En el artículo anterior hay varios enlaces a propuestas de este tipo, en las que se utiliza un servidor proxi para efectuar la comunicación con un tercer dominio).

Este es un sencillo php que se encarga de leer y devolver una página ajena al dominio. probar
codeRssRead
* El problema es que cuando intentá hacer una llamada "xmlhttprequest" a este documento para cargar una rss con ajax no parecía funcionar por algún motivo.

<?php
if (isset($_GET['href'])) {
        // con file recorremos el documeto linea a linea a traves de la variable $lineas
        $lineas = file('http://'.trim($_GET['href']));
        foreach ($lineas as $linea_num => $linea) {
                echo $linea;
        }
} else {
        echo "href no esta definido";
}
?>

Por esta razón acabé por elaborar otro script que se encargara de leer la información y reescribirla en un documento xml.
codeRssRead2
activar el script

ver el resultado

* Este script sí funcionó adecuadamente, pero es como una especie de cache que almacena el contenido de cualquier rss en tu servidor para usarlo en una llamada "xmlhttprequest".

readrss2.php?href= + "URL"

Al igual que en el caso anterior modificando la variable "href" es posible cargar cualquier página web o documento xml. Aunque en cualquier caso el script tiene que ser ejecutado antes de hacer la llamada "xmlhttprequest" a "feed.xml" para que los datos esten actualizados. De lo contrario en "feed.xml" estará almacenado el contenido de una consulta anterior.

<?php
if (isset($_GET['href'])) {
        $lineas = file('http://'.trim($_GET['href']));
        $texto = "";
        if ($documento = fopen("feed.xml", "w")){
                foreach ($lineas as $linea_num => $linea) {
                        $texto .= $linea;
                }
                fwrite($documento, $texto);
        }
        fclose($documento);
}
?>

ajax agent (local) es una librería php que permite leer rss externos generando una memoria cache de los mismos

2015 VHPLab. I 2014 I 2013 I
English I Galego