Hi,
folgende DAtei wurde bis jetzt z.B von meinem Skript eingelesen:
Nun hat sich an dem Feldinhalt aber etwas geändert. Nun sollen auch Kommas im Feldinhalt vorkommen. Somit kann ich das Komma, welches ich bis dato als Trennzeichen genutzt habe, nicht mehr verwendet werden. Stattdessen will ich nun "," als Trennzeichen benutzen.
Leider kann ich dies mit fgetcsv nicht realisieren.
Hier der Code des bisherigen Skriptes:
DAS FGETCSV IN DER WHILE SCHLEIFE IST DAS PROBLEM
Noch zur Erläuterung.
Für jede Datenzeile wird eine neue Datei in Liniendarstellung erstellt.
folgende DAtei wurde bis jetzt z.B von meinem Skript eingelesen:
Code:
"Feld1","Feld2","Feld3","Feld4"
"Data1","Data2: String="xyz" fertig","Data3","Data4"
"Data1","Data2: String="xyz" fertig","Data3","Data4"
Nun hat sich an dem Feldinhalt aber etwas geändert. Nun sollen auch Kommas im Feldinhalt vorkommen. Somit kann ich das Komma, welches ich bis dato als Trennzeichen genutzt habe, nicht mehr verwendet werden. Stattdessen will ich nun "," als Trennzeichen benutzen.
Leider kann ich dies mit fgetcsv nicht realisieren.
Hier der Code des bisherigen Skriptes:
DAS FGETCSV IN DER WHILE SCHLEIFE IST DAS PROBLEM
PHP:
$fh = fopen($argv[3], "r") or die ("cannot open file ".$argv[3]."\n"); #File in ein Array einlesen
//Anzahl der Zeilen ermittlen
$zeilen = 0;
if ($fh) {
while (!feof($fh)) {
if (fgets($fh,1048576)) {
$zeilen++;
}
}
}
rewind($fh);
$felder = fgetcsv($fh, 1000, ","); // Feldnamen ermitteln
$anzahl = count($felder); // Anzahl der Felder speichern
#Bei den Parametern der fgetcsv-Anweisung wird "~" als das Zeichen angegeben in welches der Text eingeschlossen ist.
#Es sollte/müßte ein Zeichen sein, das in Wirklichkeit nicht in der Datei enthalten ist.
#Das hat zur Folge, dass das doppelte Anführungszeichen beim Einlesen nicht entfernt wird.
$i=0;
$resultfile=fopen("konvertiert_zu_line.".$i.".txt","w");
while ($inhalt = fgetcsv($fh, 1000, ",", "~")) {
for ($a = 0; $a < $anzahl; $a++) {
fputs($resultfile,$felder[$a] .";" .trim($inhalt[$a],"\"") ."\r\n");
}
fputs($resultfile,"\r\n");
$i++;
if($i<$zeilen-1)
{
fclose($resultfile);
$resultfile=fopen("konvertiert_zu_line.".$i.".txt","w");
}
}
echo "Konvertierung erfolgreich";
unset($fh);
Noch zur Erläuterung.
Für jede Datenzeile wird eine neue Datei in Liniendarstellung erstellt.