Cómo detectar si una página es un feed RSS o ATOM

Actualmente estoy construyendo un nuevo lector de feeds en línea en PHP. Una de las características en las que estoy trabajando es el descubrimiento automático de feeds. Si un usuario ingresa la URL de un sitio web, el script detectará que no es un feed y buscará el URL del feed real analizando el HTML para la etiqueta adecuada.

El problema es que la forma en que actualmente estoy detectando si la URL es un feed o un sitio web solo funciona una parte del tiempo, y sé que no puede ser la mejor solución. En este momento estoy tomando la respuesta CURL y ejecutándola a través de simplexml_load_string, si no puede analizarla, la trato como un sitio web. Aquí está el código.

$xml = @simplexml_load_string( $site_found['content'] );

if( !$xml ) // this is a website, not a feed
{
    // handle website
}
else
{
    // parse feed
}

Obviamente, esto no es ideal. Además, cuando se encuentra con un sitio web HTML que puede analizar, cree que es un feed.

¿Alguna sugerencia sobre una buena manera de detectar la diferencia entre un feed o no en PHP?

Gracias,

Pimientahttp://feedingo.com

Respuestas a la pregunta(4)

Su respuesta a la pregunta