Textfile auslesen - Explode ohne Sonderzeichen

Gifty43

Erfahrenes Mitglied
Hallo Leute,

Ich habe eine .txt-Datei, welche wie folgt aussieht:

Code:
3239594.90  83
3228194.90  24
3114894.90  69
3045288.90  23
3268394.90  46
3230494.90  23
2906994.90  45
2939688.90  32
3271958.90  66
3258288.90  31

Die Stellen 1-5 jeder Zeile ist die Artikelnummer, Stellen 6-12 der Preis und Stellen 13-14 der Code für die Gruppenzugehörigkeit. Wie ihr sehen könnt, sind diese nicht mit einem Komma, einer Pipe o.ä. getrennt.

Jetzt meine Frage: Kann ich hier trotzdem einen explode() einsetzen? Wenn ja, wie?
Oder wie könnte ich das Problem am besten lösen?

Das File in einen Array ausgelesen hab ich schon: ;)

PHP:
<?php 
 $file = "artikel.txt";
 $farray = file($file);
 for ($i = 0; $i < count($farray); $i++) { 

 } 
?>

Bin für jeden Input dankbar.

Besten Dank schonmal im Voraus.
 
Dein Ansatz ist richtig und die weitere Zuordnung kannst du per [phpf]substr[/phpf] machen.

PHP:
$article['price'] = substr($farray[$i], 0, 4);

Und so weiter halt.
 
Hi, eine Alternative zum oben genannten Code mit substr() wäre es mit preg_match() zu arbeiten, das hätte den dicken Vorteil, dass die Daten auch auf das gültige Format überprüft werden, also z.B. leere Zeilen oder falsche Einträge oder Kommentare in der Datei artikel.txt ignoriert werden. Das ganze könnte z.B. so aussehn:

PHP:
$articles = array();

for ($i = 0; $i < count($farray); $i++)
{ 
  if (preg_match("'^\s*([0-9]{1,5})\s*([0-9\.]{1,7})\s*([0-9]{1,2})\s*$'", $farray[$i], $m))
  {
    $articles[] = array('article' => (int)$m[1], 'price' => (float)$m[2], 'group' => (int)$m[3]);
  }
}

(P.S. Das Beispiel ist getestet und funktioniert ohne Probleme)
 
Zurück