Hallo zusammen,
ich habe eine csv - Datei mit z.B. diesem Eintrag:
"Inhalt 1","Inhalt 2 Zeilenumbruch ""\"" und
weiter","Inhalt 3"
Ja, das ist eine Zeile, wobei im Feld 2 ein Zeilenumbruch ist.
Ich habe das mal mit diesem Script ausgelesen:
Als Ergebnis bekomme ich folgendes:
Eintrag von 0 : Inhalt 1
Eintrag von 1 : Inhalt 2 Zeilenumbruch "\" und
Eintrag von 0 : weiter"
Eintrag von 1 : Inhalt 3
Es sieht so aus, als ob nach dem "\" der erste Zeilenumbruch dann eine neue Zeile erzeugt, statt dies in dem Feld zu machen.
Wenn ich beim fgetcsv zusätzlich noch einen escape Zeichen hinzu füge, der in dem Text nicht vor kommt,
funktioniert der Aufruf.
Ergebnis:
Eintrag von 0 : Inhalt 1
Eintrag von 1 : Inhalt 2 Zeilenumbruch "\" und weiter
Eintrag von 2 : Inhalt 3
An der Erzeugung der csv kann ich leider nicht viel machen, weil mir diese in dieser Art vorgegeben wird.
Problem schein wohl dieses ""\"" zu sein.
Vor dem Export als csv stand dort "\"
Der Export scheint hier wohl mit " zu escapen zu wollen.
Des weiteren habe ich das noch ein paar Tests gemacht.
z.B. diesen hier:
csv-Datei:
"Inhalt 1","Inhalt 2 Zeilenumbruch \" und
weiter","Inhalt 3"
Ergebnis:
Eintrag von 0 : Inhalt 1
Eintrag von 1 : Inhalt 2 Zeilenumbruch \" und weiter
Eintrag von 2 : Inhalt 3
Wenn ich das Escape - Zeichen weg nehme, bzw auf X ändere [fgetcsv($handle,0,',','"','X')] wird das wieder falsch dargestellt.
Eintrag von 0 : Inhalt 1
Eintrag von 1 : Inhalt 2 Zeilenumbruch \ und
Eintrag von 0 : weiter"
Eintrag von 1 : Inhalt 3
Also, ich vermute mal, dass die Fehlertoleranz bei der csv - Datei Auswertung mir hier Probleme macht.
Hat jemand eine Idee, wie ich eine csv mit dem Inhalt ""\"" als "\" importieren kann ohne das Escape ändern zu müssen?
Danke und Grüße
Stephan
ich habe eine csv - Datei mit z.B. diesem Eintrag:
"Inhalt 1","Inhalt 2 Zeilenumbruch ""\"" und
weiter","Inhalt 3"
Ja, das ist eine Zeile, wobei im Feld 2 ein Zeilenumbruch ist.
Ich habe das mal mit diesem Script ausgelesen:
PHP Code:
<?php
if (($handle = fopen("file.csv", "r")) !== FALSE)
{
while (($data = fgetcsv($handle,0,',','"')) !== FALSE)
{
$anzahl = 3;
echo "<ul>";
for ($x = 0; $x < $anzahl; $x++)
{
if (isset($data[$x]) == 1)
{echo "<li>Eintrag von $x : ".$data[$x]." </li>";}
}
echo "</ul>";
}
}
?>
Eintrag von 0 : Inhalt 1
Eintrag von 1 : Inhalt 2 Zeilenumbruch "\" und
Eintrag von 0 : weiter"
Eintrag von 1 : Inhalt 3
Es sieht so aus, als ob nach dem "\" der erste Zeilenumbruch dann eine neue Zeile erzeugt, statt dies in dem Feld zu machen.
Wenn ich beim fgetcsv zusätzlich noch einen escape Zeichen hinzu füge, der in dem Text nicht vor kommt,
funktioniert der Aufruf.
PHP Code:
<?php
if (($handle = fopen("importfile/problems.csv", "r")) !== FALSE)
{
while (($data = fgetcsv($handle,0,',','"','X')) !== FALSE)
{
$anzahl = 3;
echo "<ul>";
for ($x = 0; $x < $anzahl; $x++)
{
if (isset($data[$x]) == 1)
{echo "<li>Eintrag von $x : ".$data[$x]." </li>";}
}
echo "</ul>";
}
}
?>
Eintrag von 0 : Inhalt 1
Eintrag von 1 : Inhalt 2 Zeilenumbruch "\" und weiter
Eintrag von 2 : Inhalt 3
An der Erzeugung der csv kann ich leider nicht viel machen, weil mir diese in dieser Art vorgegeben wird.
Problem schein wohl dieses ""\"" zu sein.
Vor dem Export als csv stand dort "\"
Der Export scheint hier wohl mit " zu escapen zu wollen.
Des weiteren habe ich das noch ein paar Tests gemacht.
z.B. diesen hier:
csv-Datei:
"Inhalt 1","Inhalt 2 Zeilenumbruch \" und
weiter","Inhalt 3"
PHP Code:
<?php
if (($handle = fopen("importfile/problems.csv", "r")) !== FALSE)
{
while (($data = fgetcsv($handle,0,',','"')) !== FALSE)
{
$anzahl = 3;
echo "<ul>";
for ($x = 0; $x < $anzahl; $x++)
{
if (isset($data[$x]) == 1)
{echo "<li>Eintrag von $x : ".$data[$x]." </li>";}
}
echo "</ul>";
}
}
?>
Eintrag von 0 : Inhalt 1
Eintrag von 1 : Inhalt 2 Zeilenumbruch \" und weiter
Eintrag von 2 : Inhalt 3
Wenn ich das Escape - Zeichen weg nehme, bzw auf X ändere [fgetcsv($handle,0,',','"','X')] wird das wieder falsch dargestellt.
Eintrag von 0 : Inhalt 1
Eintrag von 1 : Inhalt 2 Zeilenumbruch \ und
Eintrag von 0 : weiter"
Eintrag von 1 : Inhalt 3
Also, ich vermute mal, dass die Fehlertoleranz bei der csv - Datei Auswertung mir hier Probleme macht.
Hat jemand eine Idee, wie ich eine csv mit dem Inhalt ""\"" als "\" importieren kann ohne das Escape ändern zu müssen?
Danke und Grüße
Stephan
Comment