OPML Datei mittels PHP auslesen + Problem mit Datum

terminator2k3

Grünschnabel
Hallo Leute!

Ich habe ein Script geschrieben, dass mir, entweder über die Eingabe einer URL direkt zu einem RSS1.0, RSS2.0 oder ATOM0.3 Feed oder aber über die Angabe einer OPML Datei alle Feeds ausliest und einer Datenbank speichert.

Funktioniert super, nur habe ich ein Problem:
Da es sich bei den Feeds immer wieder um einen anderen Typ handelt (RSS1.0, RSS2.0 oder ATOM0.3) brauchte ich eine Funktion die mir das Datum dieser verschiedenen Typen auslesen kann, damit in der DB jeder Typ und alles im selben Format eingetragen werden kann - funktioniert auch super.

Bei manchen Feeds jedoch (alle die im File mit <?xml version="1.0" encoding="ISO-8859-1"?> beginnen) kriege ich das Datum nicht raus, und ich weiß nicht warum! - bei allen anderen funktioniert es!

Wäre super, wenn ihr mir helfen könntet!
Danke, MFG, terminator2k3
 
Da der Bezeichner des Formats und dessen Version immer mit angegeben sein sollte, kannst du die Daten doch aufgrund dieser Information verarbeiten.

Wie verarbeitest du denn die Feeds?
 
Ich verwende dazu einen Teil des Sourcecodes von MagpieRSS.
Lese title, URL, description und das Datum aus. Fürs Datum hab ich folgende function:

PHP:
function displayUnixTimestamp($item) 
{
    $rss_2_date = $item['pubdate'];
    $rss_1_date = $item['dc']['date'];
    $atom_date = $item['issued'];
    if ($atom_date != "") $date = parse_w3cdtf($atom_date);
    if ($rss_1_date != "") $date = parse_w3cdtf($rss_1_date);
    if ($rss_2_date != "") $date = strtotime($rss_2_date);
    if ($date == "") $date = time();
    return $date;
}

--> weil das Datum bei RSS1.0/RSS2.0/ATOM0.3 ander auszulesen und zu konvertieren ist. Nachdem alle Daten der Feeds ausgelesen sind werden sie in die DB geschrieben.

MfG
 
Hmm, kanns sein, dass in manchen Feeds einfach kein Datum vorhanden ist, das XML-File also unvollständig/fehlerhaft ist?
Wenn ich nämlich die Variable, in der das ausgelesene Datum drinsteht, ausgebe, erhalte ich folgende Meldung:

Warning: date(): Windows does not support dates prior to midnight (00:00:00), January 1, 1970 in C:\...

MfG
 
Zurück