XML mit PHP zerlegen?

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
heini
Mitglied
Beiträge: 50
Registriert: 07.11.2004 11:03
Wohnort: Wachtberg

XML mit PHP zerlegen?

Beitrag von heini »

Hallo,

vielleicht kann mir hier jemand weiterhelfen.
Ich möchte einen RSS-Feed, der als XML kommt, zerlegen.
Das Einlesen klappt, aber die einzelnen Datensätze in die Felder
zerlegen, das klappt nicht.
Als Beispiel habe ich mir aus dem Portal-Mod den Heise-Newsticker
vorgenommen, aber irgendwie...

Hat jemand ein Beispiel, mit welchen PHP-Befehlen man die XML-Struktur
in die Felder zerlegen kann?

Ciao

Martin :cry:
heini
Mitglied
Beiträge: 50
Registriert: 07.11.2004 11:03
Wohnort: Wachtberg

Beitrag von heini »

Alles klar, habs schon selbst rausgekriegt. War ein bischen fummelig,
aber jetzt läufts prima.

Ciao

Martin :grin:
Benutzeravatar
saerdnaer
Ehemaliges Teammitglied
Beiträge: 4268
Registriert: 21.04.2001 02:00

Beitrag von saerdnaer »

und wie hast du's gemacht?

ah
heini
Mitglied
Beiträge: 50
Registriert: 07.11.2004 11:03
Wohnort: Wachtberg

Beitrag von heini »

Stimmt, sollen ja alle was von haben...

Als Basis habe ich die portal_heise_ticker.php aus dem Portal-Mod
genommen. XML-Dateien sind ja alle nach dem gleichen Schema aufgebaut. Du brauchst das Tag <item>, das ist jeweils ein Datensatz.

Dann alle End-Tags löschen:

Code: Alles auswählen

$fcontents = str_replace ("</title>", "", $fcontents);
..etc...

Dann alle Feld-Tags vereinheitlichen (außer <item>):

Code: Alles auswählen

$fcontents = str_replace ("<title>", "<tag>", $fcontents);
...etc...

Ein Array anlegen mit allen Datensätzen:

Code: Alles auswählen

$splices = explode ("<item>", $fcontents); 
Die einzelnen Felder in der Schleife separieren:

Code: Alles auswählen

for ($i = 1; $i < count($splices; $i++){ 
$satz = explode ("<tag>", $splices[$i]); 
// Titel
$title = strip_tags($satz[1]);
...etc...

Und dann ausgeben:

Code: Alles auswählen

// Ausgabe
$headline = "<b>" . "<a href=\"" . trim ($link) . "\"" . " target=\"_blank\"" . ">" . $title . "</b>" ; 
$headline = $headline . "</a>";
print $headline . "<br>" . "<br>"; 
} 
Natürlich muß man entsprechend der Datenstruktur alle Felder einzeln
ansprechen. Bestimmt geht das irgendwie auch dynamisch, aber ist
mir nicht eingefallen.

Auf diese Weise sind alle Felder des Datensatzes einzeln auflös- und
ansprechbar.

Ciao

Martin :grin:

Edit: das nächste mal bitte BBCodes verwenden MfG Saerdnaer
heini
Mitglied
Beiträge: 50
Registriert: 07.11.2004 11:03
Wohnort: Wachtberg

Beitrag von heini »

So nun habe ich noch einen anderen RSS-Feed eingebunden, mit
der gleichen Technik. Komischerweise bekomme ich nun ein Zeichen-
satzproblem:

Code: Alles auswählen

Zeitung schlägt Bob Geldof für Friedensnobelpreis vor
Weiß jemand, wie ich das lösen kann? Im Kopf wird das Tag
<language>de</language> mitgegeben.

Ciao

Martin :o
heini
Mitglied
Beiträge: 50
Registriert: 07.11.2004 11:03
Wohnort: Wachtberg

Beitrag von heini »

Habs schon selbst gefunden.

Die Funktion

Code: Alles auswählen

utf8_decode()
hats gerichtet.

Ciao

Martin :D
Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“