CSV bearbeiten !?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • CSV bearbeiten !?

    Hallo zusammen !!
    Wie kann ich mit PHP CSV-Dateien bearbeiten ??
    Genauer gesagt möchte ich in einer CSV-Datei am Ende jeder Zeile einen String einfügen. Das Auslesen ist kein Problem, nur beim Schreiben habe ich da so meine Probleme. Hat jemand eine Idee , wie ich das am einfachsten machen könnte ??
    Für jegliche Hilfe wäre ich sehr dankbar.

    slayter

  • #2
    PHP-Code:
    $daten file('csv.csv');
    foreach(
    $daten as $key=>$value){
        
    $daten[$key] = str_replace('\r\n',';irgendein String\r\n',$value);

    Setzt voraus, dass das Zeilenendzeichen ein \r\n ist und der Trenner der CSV ; Ansonsten einfach entsprechend anpassen.
    Nach der Bearbeitung das Array mittels implode() wieder zu einem String machen und mittels fwrite() wieder in die Datei schreiben.

    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Die Spalten werden zwar mit ; getrennt, jedoch steht am zeilenende nichts. Mit dieser Methode komme ich irgendwie nicht weiter, da ich ja nicht ersetzen kann. Hast du vielleicht noch eine Idee ??
      Danke im voraus !

      slayter

      Kommentar


      • #4
        Die Spalten werden zwar mit ; getrennt, jedoch steht am zeilenende nichts. Mit dieser Methode komme ich irgendwie nicht weiter, da ich ja nicht ersetzen kann. Hast du vielleicht noch eine Idee ??
        Also ein Zeilenendzeichen wie \r\n oder \n siehst du nicht im String. Wenn du aber die csv Datei im Editor öffnest und dort eine Zeile nach der anderen steht (getrennt durch ein return) dann hast du auch Zeilenendzeichen drinn.
        Hast du es denn probiert ?

        Gruss

        tobi
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          Du willst ans zeilenende anhängen? Warum machst du das nicht einfach?

          1) Datei Zeilenweise einlesen
          2) an jede zeile den string anhängen
          3) datei zurück schreiben.

          Fertig.

          Kommentar


          • #6
            @topicstarter
            Wenn du TobiasZ' Vorschlag machen willst, musst du vor dem Anfügen des Strings die Zeilenendzeichen erst entfernen
            PHP-Code:
            $daten file('csv.csv');
            foreach(
            $daten as $key=>$value){
                
            $daten[$key] = trim($value).';dein Wunschstring\r\n';

            Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              Vielen Dank.
              Mit dem zusätzlichen Trim hat es wunderbar geklappt.

              Original geschrieben von jahlives
              @topicstarter
              Wenn du TobiasZ' Vorschlag machen willst, musst du vor dem Anfügen des Strings die Zeilenendzeichen erst entfernen
              PHP-Code:
              $daten file('csv.csv');
              foreach(
              $daten as $key=>$value){
                  
              $daten[$key] = trim($value).';dein Wunschstring\r\n';

              Gruss

              tobi

              Kommentar


              • #8
                ich habe jetzt ein kleines Problem mit dem Schreiben der Datei.
                Er schreibt mir alles forlaufend weg in nur eine Zeile.
                Ich möchte aber, dass es am zeilenende eine neue zeile beginnt.
                Mein Code sieht jetzt folgendermaßen aus:


                PHP-Code:
                $filename="csv.csv";
                $daten file('csv.csv');
                $handle fopen($filename"w");
                foreach(
                $daten as $key=>$value){
                    
                $content=$daten[$key] = trim($value).';string\r\n';
                    
                fwrite($handle$content);

                Jemand einen Tipp, wie ich das hinbekommen kann ?
                Danke im Vorraus !

                slayter

                Kommentar


                • #9
                  emand einen Tipp, wie ich das hinbekommen kann ?
                  Ja ich. Nimm den fwrite aus der Schleife raus. Und schreibe erst wenn die Schleife komplett durchgelaufen ist.
                  In deinem Bsp dürfte nur die letzte Zeile am Schluss in der Datei stehen
                  PHP-Code:
                  $filename="csv.csv";
                  $daten file('csv.csv');
                  $handle fopen($filename"w");
                  foreach(
                  $daten as $key=>$value){
                      
                  $daten[$key] = trim($value).';string\r\n';
                  }
                  fwrite($handleimplode('',$daten));
                  fclose($handle); 
                  Gruss

                  tobi
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #10
                    PHP-Code:
                    $content=$daten[$key] = trim($value).';string\r\n'
                    Achtung, die umbrüche hast du jetzt vermutlich im klartext in der Datei stehen.

                    statt

                    '\r\n' nimmst du einfach "\r\n".

                    Kommentar


                    • #11
                      Achtung, die umbrüche hast du jetzt vermutlich im klartext in der Datei stehen.
                      Autsch, da fall ich doch immer wieder rein...
                      Danke + Gruss

                      tobi
                      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                      Kommentar


                      • #12
                        Vielen Dank euch allen !
                        Jetzt funktioniert alles einwandfrei

                        slayter

                        Kommentar

                        Lädt...
                        X