Olli: bei 'return' wird mein Wert nicht zurückgegeben

Beitrag lesen

Hallo,

ich sitze jetzt schon 2 Stunden an folgenden Codezeilen und verstehe einfach nicht, was da falsch ist. Ganz kurz: Es geht um einen Parser, der mir RSS bzw. RDF-Files einliest und in ein Array (XMLItem) schreiben soll. Ich will dazu auch den Timestamp wieder herstellen, eine formatierte Zeitangabe habe ich ja (meistens). Aber meine Parserklasse scheint den Wert der Timestamp-Funktion nicht zu übernehmen. Ich habe das schon gecheckt, es werden die korrekten Werte errechnet und dann durch ein return zurückgegeben, aber trotzdem habe ich nachher nur eine 0 (null) dastehen... Vielleicht sieht jemand den Fehler, hier der Code:

-- Aufrufende PHP-Seite: --
require_once('RSSParser.php');

$n24 = new RSSParser(dirname(__FILE__)."/xml/n24_de.xml");

echo $sport2->XMLItem[2]["timestamp"];  // ergibt '0'

-- betreffende Zeilen im Parser: --
function cdata($parser, $cdata) {
  if ($this->MainElement == "channel")
   $this->XMLChannel[$this->actualElement] = trim($cdata);

if ($this->MainElement == "image")
   $this->XMLImage[$this->actualElement] = trim($cdata);

if ($this->MainElement == "item")  {
   $this->XMLItem[$this->ItemElementCounter][$this->actualElement] = trim($cdata);

if ($this->actualElement == "pubDate") {
    $this->XMLItem[$this->ItemElementCounter]["timestamp"] = createTimestamp("pubDate",$this->XMLItem[$this->ItemElementCounter][$this->actualElement]);
   }

elseif ($this->actualElement == "dc:date") {
    $this->XMLItem[$this->ItemElementCounter]["timestamp"] = createTimestamp("dc:date",$this->XMLItem[$this->ItemElementCounter][$this->actualElement]);
   }

else {
    $this->XMLItem[$this->ItemElementCounter]["timestamp"] = 0;
   }
  }
 }

-- Funktion createTimestamp(): --
function createTimestamp ($type, $str_time) {
  if ($type == "pubDate") {
   $hour = substr($str_time, 17,2);
   $minute = substr($str_time, 20,2);
   $second = substr($str_time, 23,2);

$day = substr($str_time, 5,2);
   $month = getSpecialMonth(substr($str_time, 8,3));
   $year = substr($str_time, 12,4);

return mktime($hour, $minute, $second, $month, $day, $year);
  }
  elseif ($type == "dc:date") {
   echo $type;
   $hour = substr($str_time, 11,2);
   $minute = substr($str_time, 14,2);
   $second = substr($str_time, 17,2);

$day = substr($str_time, 8,2);
   $month = substr($str_time, 5,2);
   $year = substr($str_time, 0,4);

return mktime($hour, $minute, $second, $month, $day, $year);
  }
  else {
   return 0;
  }

//return gmdate("D M j G:i:s T Y",$timestamp);
 }

Noch zur Erläuterung:
XMLItem ist das Array, in das meine ganzen Inhalte geschmissen werden, also auch der Timestamp

ItemElementCounter ist ein Zähler für mein XMLItem-Array

In pubDate bzw dc:data stehen formatierte Datums- und Zeitangaben, aus denen ich meinen Timestamp wieder rekonstruiren will.

Ich habe nun schon alles ausprobiert, was mir einfiel, um das Problem zu lokalisieren. Mein Funktionen werden korrekt aufgerufen mit allen Werten und es wird auch alles korrekt zurückgegeben, nur dass der Wert nicht in der dafür vorgesehene ["timestamp"] erscheint...

Wäre dankbar, wenn einer den Fehler findet...

Gruss Olli