txt file einlesen und als csv speichern

wopu

Mitglied
Hallo zusammen.
Ich stehe bei dem Thema voll auf der Seife und würde eure Hilfe benötigen.
Ich habe eine txt Datei zum einlesen die so aussieht.
1,2,3,4,5,6,7,8,9,10
1,2,3,4,5,6,7,8,9,10

einlesen und Ansicht im Browser ist kein Problem (echo) wo ich jetzt hänge ist ich will die Reihenfolge ändern. Das soll dann so aussehen.
Feld1 <TAB> Feld2 <TAB> Feld3 <TAB> Feld4
RS <TAB> 4 <TAB> 5 <TAB> 9
RS <TAB> 4 <TAB> 5 <TAB> 9

Das sollte dann in einem neuen file .csv gespeichert werden (genau mein Problem) zusätzlich soll davor noch eine Zeile eingefügt werden. Hat jemand eine Idee dazu wie ich das bewerkstelligen könnte??

PHP:
    <?php
    $row = 0;
    if (($handle = fopen("test.txt", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
     echo $a . "RS" .$data[3]."\t".$data[4]."\t".$data[10]."</font><br>";
        }
    fclose($handle);
}
?>
 
Was willst du nun genau in der neuen CSV-Datei speichern?

Diese Ausgabe ...
PHP:
$a."RS".$data[3]."\t".$data[4]."\t".$data[10]."</font><br>";

oder die Werte die in der Ausgabe genutzt wurden also
$a, $data[3], $data[4], $data[10]?
 
Dann gib die Zeile doch nicht direkt aus sondern speichere sie.

PHP:
$ARR = array( );
$str = "%sRS%s\t%s\t%s</font><br>";
$row = 0;
if (($handle = fopen("test.txt", "r")) !== FALSE) {
     while( ( $data = fgetcsv($handle, 1000, "," ) ) !== FALSE ) {
          $ARR[] = sprintf( $str, $a, $data[3], $data[4], $data[10] );
          echo $ARR[( count( $ARR )-1 )];
     }
     fclose($handle);
}

$ausgabe = implode( ',', $ARR );
#### $ausgabe in Datei schreiben ####
 
Vielen Dank für die Antwort. Ich habe es dementsprechend eingebaut und es funktioniert auch. Leider bin ich draufgekommen das sich in meinem txt File nicht nur "," sondern teilweise hinter dem Komma auch noch zwei Leerzeichen verstecken. muss ich da den "fgetcsv" nochmals ausführen oder kann ich die Argumente hinzufügen??
 
Hallo rundum,
1. Vielen Dank für die Hilfe,
2. Sorry für meine blöde Fragen oben.
Habe den Rest meines Problems durch Schlaf und nochmaliges Nachdenken lösen können.

Der Code schaut jetzt so bei mir aus. txt Datei wird gelesen, auf "," und " " wird geachtet danach löse ich mir die Spalten raus
und speichere sie in einem neuen File als csv , Erste Zeile wird neu eingefügt.

PHP:
<?php
$a = "";
$ARR = array( );
$str = "%sRS\t%s\t%s\t%s\n";
$row = 0;
if (($handle = fopen("temp/hochgeladenes.txt", "r")) !== FALSE) {
     while( ( $data = fgetcsv($handle, 1000, ",", "  " ) ) !== FALSE ) {
          $ARR[] = sprintf( $str, $a, $data[3], $data[4], $data[10] );
//         echo "RS" .$data[3]."\t".$data[4]."\t".$data[10]."</font><br>";
     }
     fclose($handle);
}

// Fügt ein Element (Text) am Anfang eines Arrays ein
array_unshift($ARR, "cc","\t","lat","\t","lon","\t","hoehe\n");

$ausgabe = implode( '', $ARR );
#### $ausgabe in Datei schreiben ####

// Text in Datei schreiben und speichern
file_put_contents("Daten/rs92.csv", $ausgabe);
?>
 
Zurück