Tobi: fscanf leerzeichen ignorieren

Hallo.

Ich habe ein Textfile, welches Tabellenspalten mit Tabs darstellt.

Ich lade die Datei wie folgt ein :

<?

$handle = fopen ("file.txt","r");

$x=0;
while ($userinfo = fscanf ($handle, "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n")) {
    list ($s[1], $s[2], $s[3], $s[4], $s[5], $s[6], $s[7], $s[8], $s[9], $s[10], $s[11]) = $userinfo;
...

Nun interpretiert fscanf nicht nur die Tabs sondern auch die "Leerzeichen" als Spaltenwechsel, wie kann ich das umgehen ?

Schönen Gruß und vielen Dank im Voraus
Tobias

  1. Hi,

    Ich habe ein Textfile, welches Tabellenspalten mit Tabs darstellt.

    da würde ich an deiner Stelle fgetcsv() bevorzugen:

    while ($userinfo = fgetcsv($handle, 1024, chr(9))) {
    // ...
    }

    Ich habe es aber nicht getestet, also keine Ahnung, ob der Fehler dort auch auftritt...

    Gruß.

  2. Hi nochmal,

    beim Nachlesen unter php.net ist mir aufgefallen, dass das von dir beschriebene Verhalten von fscanf() gar kein Fehler ist, denn es steht so in der Doku (hättest du auch selbst lesen können, dein Beispiel stammt doch von dort, oder? ;-)):

    "Irgendwelche Whitespace-Zeichen (z.B. Leerzeichen, Tabulator, etc.) im Format String gelten mit irgendwelchen Whitespace-Zeichen des Input-Streams als übereinstimmend. Das heißt, dass auch ein Tabulator \t im Format String mit einem einzigen Leerzeichen im Input-Stream als übereinstimmend gelten kann."

    Gruß.