Hi I am trying to get data from an RSS feed using the script below. It works when i use an RSS link from the BBC website i.e. http://website.com/index.php?feed_url=http://feeds.bbci.co.uk/news/rss.xml&access_key=*
but when i use this: http://website.com/index.php?feed_url=http://www.daft.ie/rss.daft?uid=995213&id=173007&xk=113561&access_key=*
It throws this error,
Access key correct, proceeding...
Starting to work with feed URL 'http://www.daft.ie/rss.daft?uid=995213'Failed loading XML Document is empty Start tag expected, '<' not found
Any help would be much appreciated!
$db_hostname="*";
$db_username="";
$db_password="";
$private_access_key="*";
// Check a few bits and pieces
if(isset($GET['feed_url']))
{
$feed_url = $GET['feed_url'];
}
else
{
die("Need to pass the (consistent) 'feed url'");
}
if(isset($_GET['access_key']))
{
if($_GET['access_key']==$private_access_key)
{
echo "Access key correct, proceeding...<br/><br/>";
}
else
{
die("wrong access key");
}
}
else
{
die("Need to pass the 'access_key' URL parameter");
}
try
{
/ query the database /
// $db = getCon();
$db = mysql_connect($db_hostname,$db_username,$db_password);
if (!$db)
{
die("Could not connect: " . mysql_error());
}
mysql_select_db("mcwilli_rssingest", $db);
echo "Starting to work with feed URL '" . $feed_url . "'";
libxml_use_internal_errors(true);
$RSS_DOC = simpleXML_load_file($feed_url);
print_r($RSS_DOC);
if (!$RSS_DOC) {
echo "Failed loading XML\n";
foreach(libxml_get_errors() as $error) {
echo "\t", $error->message;
}
}
/* Get title, link, managing editor, and copyright from the document */
$rss_title = $RSS_DOC->channel->title;
$rss_link = $RSS_DOC->channel->link;
$rss_editor = $RSS_DOC->channel->managingEditor;
$rss_copyright = $RSS_DOC->channel->copyright;
$rss_date = $RSS_DOC->channel->pubDate;
//Loop through each item in the RSS document
foreach($RSS_DOC->channel->item as $RSSitem)
{
$item_id = md5($RSSitem->title);
$fetch_date = date("Y-m-j G:i:s"); //NOTE: we don't use a DB SQL function so its database independant
$item_title = $RSSitem->title;
$item_date = date("Y-m-j G:i:s", strtotime($RSSitem->pubDate));
$item_url = $RSSitem->link;
echo "Processing item '" , $item_id , "' on " , $fetch_date , "<br/>";
echo $item_title, " - ";
echo $item_date, "<br/>";
echo $item_url, "<br/>";
// Does record already exist? Only insert if new item...
$item_exists_sql = "SELECT item_id FROM rssingest where item_id = '" . $item_id . "'";
$item_exists = mysql_query($item_exists_sql, $db);
if(mysql_num_rows($item_exists)<1)
{
echo "<font color=green>Inserting new item..</font><br/>";
$item_insert_sql = "INSERT INTO rssingest(item_id, feed_url, item_title, item_date, item_url, fetch_date) VALUES ('" . $item_id . "', '" . $feed_url . "', '" . $item_title . "', '" . $item_date . "', '" . $item_url . "', '" . $fetch_date . "')";
$insert_item = mysql_query($item_insert_sql, $db);
}
else
{
echo "<font color=blue>Not inserting existing item..</font><br/>";
}
echo "<br/>";
}
// End of form //
} catch (Exception $e)
{
echo 'Caught exception: ', $e->getMessage(), "\n";
}
?>