preg_match - nach ";" trennen

mintroad

Grünschnabel
Hallo Zusammen!
Folgende Zeilen lese ich in eine Variable ein:

Code:
wert;wert;wert;wert;wert;wert;;;;;;;;;;;;;;;;;;;
wert;wert;wert;;wert;wert;;;;;;;;;;;;;;;;
wert;wert;wert;;wert;wert;;;;;;;;;;;;;;;;
wert;wert;wert;wert;wert;wert;;;;;;;;;;;;;;;

Es sind also in jeder Zeile 6 Werte, getrennt durch Semikolon, wobei der vierte Wert nicht existieren muss. Nach dem sechsten Wert kommen noch einige Semikola, welche weggeschnitten werden können.
Ich möchte alle Werte in ein Array schreiben.
Folgenden Code habe ich schon:

PHP:
foreach ($file as $line)
  {
    if (preg_match('#(.+);(.+);(.+);(.+);(.*);(.+)#', $line, $rueckgabe))
    {
          echo $rueckgabe;
    }
  }

Leider funktioniert die Ausgabe nur dann, wenn der vierte Wert exisitert. Wenn er nicht existiert, wird ein Semikolon in das entsprechende Element von $rueckgabe geschrieben. Es sollte aber einfach leer bleiben.
Zudem sollten die vielen Semikola am Ende der Zeile weggeschnitten werden.

Wie mach ich das? Die Manuals von preg_match haben mich zu dem hier geführt, leider aber nicht weiter.

Vielen Dank.
 
Zerleg die einzelnen Zeilen doch gleich mit explode() und filtere die leeren Array-Elemente heraus.
 
Zurück