Ungewollter Zeilenumbruch

dUser

Mitglied
Guten Abend,

ich habe mich in der letzten Zeit mit der Verwaltung von CSV Dateien beschäftigt.
Hierbei ist mir ein Fehler aufgefallen, welchen ich leider nicht lösen kann.

-Konzept:
Code:
1(//)Max
2(//)Peter(//)Meier
3(//)Gabriel(//)Steiner
4(//)Wolfgang(//)Peters


5(//)Klaus(//)Klausen
6(//)Dieter(//)Mueller
Ich möchte eine CSV Datei auslesen. Anfangs hole ich mir den Inhalt über file_get_contents und füge die Zeilen in ein Array ein. Durch eine Schleife füge ich diese Werte in ein weiteres Array ein, wo ausschließlich Zeilen mit Inhalt drinnen stehen.
Code:
    [0] => Array
        (
            [0] => 1
            [1] => Max
        )

    [1] => Array
        (
            [0] => 2
            [1] => Peter
            [2] => Meier
        )

    [2] => Array
        (
            [0] => 3
            [1] => Gabriel
            [2] => Steiner
        )

    [3] => Array
        (
            [0] => 4
            [1] => Wolfgang
            [2] => Peters
        )

    [4] => Array
        (
            [0] => 5
            [1] => Klaus
            [2] => Klausen
        )

    [5] => Array
        (
            [0] => 6
            [1] => Dieter
            [2] => Mueller
        )

Da es leere Zeilen gab, soll die Datei aktualisiert werden.
Dies habe ich so realisieren können:
PHP:
$inhalt = "";
for ($z = 0; $z < count($zeilen); $z++){
    if (!isset($zeilen[$z])){
        while (!isset($zeilen[$z])){
            $z++;
        }
    }
        $inhalt .= (implode($delimiter, $zeilen[$z])) /* . "\n" */;
        $inhalt .= "\n";
}

Bei der oben benannten Situation (leere Zeilen) funktioniert dies wunderbar.
Jedoch habe ich nun folgendes Problem:

Ich lasse die einzelnen Zeilen noch auf Vollständigkeit prüfen.
PHP:
if (!isset($inhalt[$z][$s])){
                    $inhalt[$z][$s] = 'LEER!';

                }
Sollte ein Wert fehlen wird er durch leer ersetzt! (Erste Zeile)

Nun soll die Datei mit diesem Array aktualisiert werden:
Code:
[0] => Array
        (
            [0] => 1
            [1] => Max
            [2] => LEER!
        )

    [1] => Array
        (
            [0] => 2
            [1] => Peter
            [2] => Meier
        )

    [2] => Array
        (
            [0] => 3
            [1] => Gabriel
            [2] => Steiner
        )

    [3] => Array
        (
            [0] => 4
            [1] => Wolfgang
            [2] => Peters
        )

    [4] => Array
        (
            [0] => 5
            [1] => Klaus
            [2] => Klausen
        )

    [5] => Array
        (
            [0] => 6
            [1] => Dieter
            [2] => Mueller
        )

In der Datei erhalte ich folgendes Resultat:
Code:
1(//)Max
(//)LEER!
2(//)Peter(//)Meier
3(//)Gabriel(//)Steiner
4(//)Wolfgang(//)Peters
5(//)Klaus(//)Klausen
6(//)Dieter(//)Mueller

Meine Frage ist wieso dieser Zeilenumbruch passiert... (Zeile 2)

Vielleicht weiß ja jemand weiter.


Guten Rutsch ins neue Jahr
Mfg
 
PHP:
$inhalt .= (implode($delimiter, $zeilen[$z])) /* . "\n" */;

Durchaus wird es an dem liegen "\n".
Entferne es mal und prüfe nochmal :)
 
Danke für deine Antwort,

leider hat das entfernen nichts gebracht.
Da keine Zeilenumbrüche gesetzt werden, kann man leider nicht die Textdatei aktualisieren.
Dies wäre dann im folgenden Schritt wichtig
Da es leere Zeilen gab, soll die Datei aktualisiert werden.

Wenn es eine leere Zeile gab, und der Inhalt neu reingeschrieben wird, werden keine Zeilenumbrüche gesetzt.
-> Es entsteht ein langer, durchgehender String.
 
Guten Abend,
ich habe die Werte nun durch zwei Schleifen laufen lassen, um die Werte des Arrays reihenweise auszugeben.
Anhand der Funktion nl2br konnte ich feststellen, dass ein Zeilenumbruch nach dem Arrayindex [1][1] gesetzt wird

1Max
LEER!!2PeterMeier
3GabrielSteiner
4WolfgangPeters
5KlausKlausen
6DieterMueller
 
Es scheint so, als wäre das Problem gelöst!

Ich fand die Lösung unter einem Thread von mir, welchen ich letztes Jahr erstellt habe:

Hi
es könnte zB. \r sein, dass bei Textdateien aus Windowsprogrammen oft bei jedem Zeilenwechsel dabei ist.
Oder ein oder mehrere Leerzeichen, aus irgendeinem Grund.
Beides entfernbar mit trim
 
Zurück