2016-04-16 10 views
0

Ich muss eine Menge Daten in CSV ersetzen und nach dem Ändern aller Dinge, die ich möchte es in eine neue CSV-Datei gespeichert. Ich kann die CSV mit dem Code von php.net lesen, aber ich kann es nicht zum Arbeiten die neue Datei speichern. Ich habe diesePHP csv öffnen und Daten in neue csv speichern

$row = 0; 
    if (($handle = fopen("original.csv", "r")) !== FALSE) { 
    while (($data = fgetcsv($handle, 20000, ";")) !== FALSE) { 
    $num = count($data); 
    $cat_alt = ['cold', 'hot', ... and so on...];                
    $cat_neu = ['kalt', 'heiß', ...und so weiter...]; 

    echo "<p> $num Felder in Zeile $row: <br /></p>\n"; 
    $row++; 
    for ($c=0; $c < $num; $c++) { 
     $output = str_replace($cat_alt, $cat_neu, $data[$c] . "<br />\n"); 
     echo $output; 


    }   
    } 
} 

    $fp = fopen('changed.csv', 'w'); 

    foreach ($row as $rows) { 
    fputcsv($fp, $rows);   

    }fclose($fp); 
+0

Welchen Fehler bekommen Sie? Was funktioniert nicht? Wie sieht die gespeicherte Datei aus? – budwiser

+0

Ich bekomme keinen Fehler, aber der Inhalt der ursprünglichen csv. Der geänderte Inhalt wird jedoch nicht in der Datei "changed.csv" gespeichert. Die Datei wird auf dem Server erstellt, ist jedoch leer. – Kallmas

Antwort

2

Sie haben zwei Möglichkeiten:

  1. Verwenden n Array

    $rows = [] 
    ... 
    $rows[] = str_replace($cat_alt, $cat_neu, $data[$c] . "\n"); 
    ... 
    fputcsv($fp, $rows); 
    
  2. Öffnen Sie die Ausgabedatei, um es vorher und schreiben, wie Sie die Daten verarbeiten

    $fp = fopen('changed.csv', 'w'); 
    if (($handle = fopen("original.csv", "r")) !== FALSE) { 
        while (($data = fgetcsv($handle, 20000, ";")) !== FALSE) { 
         $num = count($data); 
         $cat_alt = ['cold', 'hot', ... and so on...];                
         $cat_neu = ['kalt', 'heiß', ...und so weiter...]; 
    
         echo "<p> $num Felder in Zeile $row: <br /></p>\n"; 
         $row++; 
         for ($c=0; $c < $num; $c++) { 
          fputs($fp, str_replace($cat_alt, $cat_neu, $data[$c] . "<br />\n")); 
         } 
        } 
    } 
    
    fclose($fp); 
    
+0

Siehe aktualisierte Option 2 – yk11

Verwandte Themen