[PHP] Bestimmte Zeilen aus Datei auslesen und ausgeben

gimmebytes

Lt. Commander
Registriert
Juni 2002
Beiträge
1.591
Moin Moin,

ich häng hier grad an einem Problem für meine Mediendatenbank fest. Ich möchte aus einer Textdatei vom freedb.org Server bestimmte Zeilen auslesen. In der Datei stehen die Informationen zu einer CD, hier z.B. von The Black Dahlia Murder.

// Schnipp

# xmcd
#
# Track frame offsets:
# 150
# 5784
# 18900
# 34418
# 51090
# 67425
# 84799
# 102729
# 116917
# 129837
#
# Disc length: 2012 seconds
#
#
# Revision: 0
# Processed by: cddbd v1.5.1PL0 Copyright (c) Steve Scherf et al.
# Submitted via: FreeRIP 2.92
#
DISCID=8a07da0a
DTITLE=the Black Dahlia Murder / Miasma
DYEAR=2005
DGENRE=Melodic Extreme Metal
TTITLE0=Built For Sin
TTITLE1=I'm Charming
TTITLE2=Flies
TTITLE3=Statutory Rape
TTITLE4=A Vulgar Picture
TTITLE5=Novelty Cross
TTITLE6=Vice Campaign
TTITLE7=Miscarriage
TTITLE8=Spite Suicide
TTITLE9=Miasma

// Schnapp

Ich möcht nun die Zeilen TTITLE0 bis TTITLE9 auslesen und das hinter dem '=', also den Songnamen in einer Variable speichern, z.B. $titel1, $titel2 usw.

Hab nun schon probiert die Datei per file() in ein array einzulesen und dann per preg_match() nach den Zeilen zu suchen. Mein regulärer Ausdruck findet auch die Zeilen, doch wie ich dann die Zeilen in die Variablen speichern kann und dann später ausgeben, dat krieg ich heut abend nicht mehr auf die Reihe.

Kann mir jemand helfen?

Gruß & Danke

merv
 
wenn du die Zeilen schon hast und die immer gleich aussehen, könntest du im einfachsten Fall einfach die explode-Funktion verwenden.

Und zwar trennst du den String nach dem Gleichheitszeichen und hast dann den vorderen und den hinteren Teil in einem Array, wenn nötig, kannst das ganze ja in eine andere Variable abspeichern. Wenn du aber schon mit regular expressions zu tun hast, dann löst es vielleicht am Besten mit diesen.

Wenn du Linux-Systembefehle absetzen kannst, könntest z.B. mit dem system-Befehl in PHP den Linux-Befehl grep absetzen, usw... Ich hatte da mal auf der Arbeit was, wo ich Log-Dateien von bis zu 100 MB oder mehr mit PHP und Linux verarbeitet habe.

Aber nur so nebenbei, wenn ich sowas schon sehe, dann würde ich dir gleich empfehlen auf eine MySQL-Datenbank umzusteigen => viel schneller, effektiver und einfacher zu bedienen und zu proggen.
 
PHP:
$lines = file($file); // zeilen einlesen
$lines_r = array_reverse($lines); // zeilen umdrehen
for($i=0; $i<=9; $i++) $title_r[] = substr($lines_r[$i], 8); // aus den ersten 10 zeilen reststring ab dem achten zeichen extrahieren und als neuen array-wert eintragen
$title = array_reverse($title); // titel wieder in die richtige reihenfolge bringen
 
Zuletzt bearbeitet:
@GeYe

Ich arbeite ja mit einer mysql Datenbank. Die Daten aus der Textdatei sollen da ja rein. Will nämlich meine private CD-Sammlung auch in die Datenbank mitaufnehmen. Will aber nicht bei jeder CD alle Titel per Hand abtippen, macht bei über 200 Stück nämlich keinen Spass ;)
Und man kann sich die Daten halt bei freedb.org besorgen, aber eben nur in Textform. Werde aber nochmal schauen, ob die nicht noch ne andere Schnittstelle anbieten.

@HoRnominatoR

Gute Lösung, hab aber leider was vergessen, mein Fehler. Die Datei bzw. die Dateien vom freedb.org Server bestehen noch aus mehr Zeilen, hier die ganze fürs obige Beispiel:

http://www.freedb.org/freedb/newage/8a07da0a

Nun ist es ja auch noch so, dass nicht jede CD 10 Titel hat, man muss das ganze deswegen wohl mit nem RegExp lösen und per Hand angeben, wieviele Titel die CD hat.
Oder man schneidet den überflüssigen Kram (also die unteren Zeilen nach den Titeln) einfach ab und machts dann nach deinem Vorschlag....

Mal schauen, ob ich da ne Lösung finde.

Sauber!
Hab die Lösung gefunden :)

http://www.woltlab.de/de/forum/thread.php?threadid=98547
 
Zuletzt bearbeitet:
Zurück
Oben