Forum: PC-Programmierung Probleme mit explode() -- php


von php (Gast)


Lesenswert?

Ich habe eine Datei die ich einlese. In dieser Datei stehen Pro zeile 3 
Informationen. und zwar in der Form:


             Information_1            Info_2       Info_3


kann ich die Informationen trotzdem mit explode auslesen? Das Problem 
ist ja dass ich am Anfang viele Leerzeichen hab. Vor Info_2 eine andere 
Anzahl (die ab Zeile 10 wieder eine andere ist) und vor Info_3 ist die 
Anzahl nochmal anders.

Oder gibt es eine andere Funktion?

von Blä (Gast)


Lesenswert?

Hast du die PHP-Doku zu explode() gelesen??

Es würde mit explode nur funktionieren, wenn du zwischen deinen Infos 
immer den gleichen Delimiter-String hast.

Vesuch dein Glück lieber in einem PHP-Forum...

von Thomas B. (Firma: Druckerei Beste) (virtupic)


Lesenswert?

explode nimmt nur einzelne Trennzeichen. Du kannst die Zeilen mit 
regulären Ausdrücken zerlegen. So was wie

preg_match("([^ ]*)\s+([^ ]*)\s+([^ ]*)", $line, $match);
$field1 = $match[1];
$field2 = $match[2];
$field3 = $match[3];

holt dir die drei Werte raus.

virtuPIC

von Julian O. (juliano)


Lesenswert?

>Es würde mit explode nur funktionieren, wenn du zwischen deinen Infos
>immer den gleichen Delimiter-String hast.

Es sind doch immer gleiche Delimiter vorhanden: Leerzeichen. Wenn man 
als Delimiter-String das Leerzeichen setzt und nur die Array-Elemente 
übernimmt, die nicht leer sind bleiben genau 3 Textelemente über.
1
$test = '       text1      text2    text3';
2
$arr1 = explode(' ',$test);
3
4
foreach($arr1 as $value)
5
  {
6
  if(!empty($value)) $arr2[] = $value;
7
  }

von Thomas B. (Firma: Druckerei Beste) (virtupic)


Lesenswert?

Setzt natürlich voraus, dass keines der Felder leer ist.

virtuPIC

von Thomas L. (tom)


Lesenswert?

... und natürlich dürfen in der Information keine Leerzeichen vorkommen.

Bist du dir überhaupt sicher, dass die Infos durch Leerzeichen getrennt 
sind und nicht durch Tabulatorzeichen o.ä.?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.