• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

PHP RSS-Feed mit mehreren Kategorien auslesen

StephanBo

Mitglied
Ein Item eines RSS-Feed hat mehrere Kategorien, die aber namentlich nicht verschieden sind (category):

<category>Cat 1</category>
<category>Cat 2</category>
<category>Cat 3</category>


Ich nutze diesen Code um den RSS-Feed auszulsen:
PHP:
...
// Items holen
foreach($xml->channel[0]->item as $item) {

    $out[] = array(
        'category'     => (string) $item->category,
        'title'        => (string) $item->title,
    );
}

// Eintraege ausgeben
foreach ($out as $value) {
    echo $value['title'].'</br>';
    echo $value['category'].'</br></br>';
}

Das Problem ist, dass ich hiermit nur die Werte aus der obersten Category erhalte. Wie bekomme ich aber die nachfolgenden Categories auch angezeigt, wenn diese nicht eindeutig definiert sind?
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
Werbung:
Ich bin JS Entwickler und kann zu PHP wenig sagen, aber der Ansatz ist der gleiche. Den Feed in JSON konvertieren und über die Properties des Objekts iterieren. Entsprechende Plugins gibt es für Scriptsprachen, und deren Frameworks.
 
Mit dem SimpleXML Object geht das schon, da muss man den Feed nicht in JSON umkonvertieren. Man müsste sich nur mal öfter die Ausgabe des Objektes anschauen. Denn "$item->category" ist ein Array bzw. ein SimpleXMLElement Object. Es gibt nun zwei Varianten:
- erste Variante: man arbeitet mit dem Objekt
- zweite Variante: man castet es als Array

PHP:
foreach($xml->channel[0]->item as $item)
{
   $cat = array();
  
   // erste variante
   foreach($item->category as $category)
   {
       $cat[] = (string) $category;
   }
  
   // zweite variante
   foreach((array) $item->category as $category)
   {
       $cat[] = $category;
   }
  
   $out[] = array(
       'category' => $cat,
         'title' => (string) $item->title,
   );
}
 
Werbung:
Zurück
Oben