rss feed via php in mysql database

Status
Niet open voor verdere reacties.

Stinuz

Terugkerende gebruiker
Lid geworden
14 jun 2003
Berichten
1.245
Hoi, ik wil graag deze rss feed via php in mijn mysql database plaatsen en daar gebruik ik dit script voor:

PHP:
<?php

include 'database.php';

$URL="http://www.medicalnewstoday.com/rss/alzheimers.xml";

$f = fopen($URL, "r");
if($f){

$pre = "";
while(!feof($f))
{

$pre= fread($f, 1000);
$source = $source.$pre;
}
}
else
{
echo 'Unable to open '.$URL.'.';
die;
}

$total= substr_count($source, "<item>");

//extract necessary information into database
$pos=0;
for($loop=0;$loop<$total;$loop++)
{
$pubdate1 = strpos($source, "<pubDate>", $pos);
$pubdateend1 = strpos($source, "</pubDate>", $pubdate1);
$pubdate1 = $pubdate1 + 9;
$pubdateend1 = $pubdateend1 - $pubdate1;
$pubdate = substr($source, $pubdate1, $pubdateend1);
$pubdate = convert($pubdate);

$line1 = strpos($source, "<title>", $pos);
$end1 = strpos($source, "</title>", $line1);
$line1 = $line1 + 7;
$end1 = $end1 - $line1;
$title = substr($source, $line1, $end1);
$title = convert($title);

$line2 = $line1 + $end1 + 1;
$line2 = strpos($source, "<description>", $line2);
$end2 = strpos($source , "</description>" , $line2);
$line2 = $line2 + 13;
$end2 = $end2 - $line2;
$category = substr($source , $line2, $end2);
$category = convert($category);

$line3 = $line2 + $end2 + 1;
$line3 = strpos($source , "<link>" , $line3);
$end3 = strpos($source , "</link>" , $line3);
$line3 = $line3 + 6;
$end3 = $end3 - $line3;
$link = substr($source , $line3 , $end3);
$link = convert($link);

$pos = $line3 + $end3 + 1;


$invoegQuery = "INSERT INTO feedrss SET id = '', datetime='".$pubdate."', title='".$title."', category='".$category."', link='".$link."'";
$invoegResult = mysql_query($invoegQuery) or die (mysql_error());

}

function convert($string)
{

$string = htmlspecialchars($string,ENT_QUOTES);
return $string;
}

?>

Dit werkt in principe wel maar ik loop tegen een paar cruciale problemen aan, namelijk:

1. Ik krijg een soort van XML code in mijn database, bij bijvoorbeeld de titel "Loss Of Smell Function - A Common..." krijg ik "Loss Of Smell Function
eund48.jpg
A Common..." Dat streepje wordt dus overgenomen als
eund48.jpg
en wordt ook zo op mijn pagina weergegeven, en dit streepje is maar een van de vele dingen waarbij dit gebeurt.

2. In de XML code staat bovenaan iets als <?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">. Dit wordt op de een of andere manier in het veld link opgenomen in de laaste entry in de database, in plaats van de link die in de xml staat aangegeven. Bij alle andere entry's wordt het veld link wel gewoon goed overgenomen, alleen bij de laatste niet :(

3. Voor de nieuwste entry wordt op de een of andere manier de titel van de pagina (Alzheimer's / Dementia News From Medical News Today) overgenomen in plaats van wat er in hed veld title in de xml wordt aangegeven. Dit gebeurt alleen bij de nieuwste entry, de rest doet het wel gewoon goed.

4. Hij zet nu de nieuwste entry als laatste in de database, bij mij staat nu de oudste entry dus bovenaan, dat moet andersom.

Iemand hier die weet hoe ik deze dingetjes kan fixen, of heeft misschien iemand een script dat gewoon veel beter is? :thumb:
 
Laatst bewerkt:
Ben je hier ooit nog uitgekomen?
Ben er ook wel benieuwd naar..! :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan