2014-12-15 7 views
5

Ich habe eine .csv Datei und wenn ich es über Notizblock öffnen es aussieht:eine CSV-Datei lesen und eine andere CSV-Datei erstellen mit PHP

ID501501503502 

Und wenn ich es im Browser über php drucken, es sieht wie

ID 501 501 503 502 

Mein Code ist:

$handle = fopen("MonC1.csv", "r"); 
$data = fgetcsv($handle, 0); 
$fh = fopen('php://output', 'w'); 
if (! empty($data)) { 
    foreach ($data as $item) { 
     echo $item."<br>"; 
    //fputcsv($fh, array($item)); 
    } 
} 

Also im Grunde die br-Tag in der for-Schleife funktioniert nicht. Das ist mein erstes Problem.

Und das zweite Problem ist, auch wenn ich fputcsv(now it is turned off) verwenden, es erstellt keine tatsächliche csv Datei.

Jetzt ist meine Frage, wie kommt es, hat es keinen Platz im Editor und wenn ich im Browser drucken, bekommt es Platz?

Ich habe nur eine Spalte und sonst nichts.

Jede Hilfe wird sehr geschätzt. Danke im Voraus.

+1

Welche HTML wird tatsächlich von diesem Skript generiert? – EWit

+0

Eigentlich ist es den Inhalt der CSV-Datei zu drucken.So, wenn die Quelldatei, die eine CSV-Datei enthält ID123 dann Echo ID 1 2 3 druckt. Das ist es – Raj

+0

Drucken wo? @EWit fragt nach der Quelle der HTML-Antwort. –

Antwort

1

Wie in meinem Kommentar erwähnt, sieht es so aus, als ob Ihre Originaldatei mit UNIX-Zeilenendungen gespeichert wird und Sie in Windows fgetcsv verwenden, sodass die gesamte Datei als eine Zeile gelesen wird. Am Ende der gesamten Ausgabe gibt es wahrscheinlich eine <br>.

Bevor Sie Ihre Datei verarbeiten, müssen Sie sie vorverarbeiten, um die Zeilenenden zu konvertieren.

Unter Linux funktioniert das Dienstprogramm unix2dos, was Sie wollen. Oder Sie können einfach \n durch \r\n in Ihrer Datei ersetzen.

Das andere Problem ist, dass fgetcsv nicht eine ganze Datei in ein Array verwandelt. Stattdessen wird eine einzelne Zeile von Ihrem Dateihandle gelesen und in ein Array konvertiert. Sie müssen Zeilen innerhalb einer Schleife lesen:

while (($data = fgetcsv($handle)) !== FALSE) { 
    // $data contains one line of the CSV, in array form 
    // now you can fputcsv the single line 
} 
+0

Brilliant. Jetzt bekomme ich die Daten in eine tatsächliche CSV-Datei geschrieben.Noch nicht perfekt 100%, aber da es nicht mit dieser Frage verbunden ist, könnte ich wahrscheinlich eine andere Frage nach dem Verbringen einige Zeit auf sie. Nochmals vielen Dank für Ihre Hilfe. – Raj

+0

Ich denke, es funktioniert nicht richtig. Ich habe while (($ data = fgetcsv ($ handle))! == FALSCH) {echo $ data [0]. "
"; } wird immer noch als einzelne Zeile im Browser ausgegeben.Nicht sicher, was ist der Fehler, den ich mache. – Raj

+0

Sorry Kumpel die Lösung funktioniert nicht. – Raj

Verwandte Themen