2011-09-16 17 views
5

He decidido usar SimplePie para analizar RSS y Atom Feeds.Comprobando la URL de fuente RSS válida

Lo que quiero hacer es dejar que las personas ingresen URL de RSS y Atom a través de campos de texto.

¿Qué pasa si ponen canales RSS y Atom no válidos?

Sé que los feeds no válidos no se analizarán a través de SimplePie.

Pero quiero saber si los Feeds se pueden analizar a través de SimplePie o no.

Y a través de ese proceso, quiero eliminar esas listas de URL de fuente RSS no válidas.

Verificar el tipo de documento, XML o HTML será un primer paso para descubrir la validez.

¿Cómo puedo hacer eso en PHP? o hay otras formas de hacer lo que quiero hacer?

+0

¿Qué versión de Simplepie estás usando? – hakre

+0

@hakre Estoy usando el ver 1.2 – InspiredJW

Respuesta

6

para comprobar si SimplePie es capaz de analizar un canal o no, que sólo puede cargar el alimento en cuestión y comprobar si hay errores:

$feed = new SimplePie(); 
$feed->set_feed_url('http://example.com/rss'); 
$feed->init(); 
$feed->handle_content_type(); 

if ($feed->error()) 
{ 
    // this feed has errors 
} 

Es posible que desee desactivar la función de descubrimiento automático para poner a prueba específica alimentar URLs Además, puede adquirir los datos de feeds por su cuenta y usar set_raw_data en lugar de set_feed_url.

+1

Gracias !!!!! :) – InspiredJW

0

aquí parece ser lista para el uso función: http://www.sitepoint.com/forums/showthread.php?555763-Validating-an-RSS-Feed-with-PHP&p=3865285&viewfull=1#post3865285

Por lo que sólo llaman

$rssvalid = validateFeed("http://yourUrlHere.com"); 
if($rssvalid == true){ 
print"Yes, it´s valid!"; 
} else { 
print"Sorry, it´s not valid!"; 
} 
+0

He intentado esto ... El problema es que esta función validateFeed examina estrictamente la validez de Feed. Algunos feeds son analizables a través de simplepie a pesar de que validateFeed dice que no es válido. – InspiredJW

0

Esto es lo que he hecho.

if(strpos(file_get_contents($feed_url),'<?xml')===false) { 
    //remove this $feed_url from the Feed List 
    return; 
} 

Esto resolvió el problema básico Lo que tenía.

Cuestiones relacionadas