CSV und leere Felder
am 30.08.2006 18:08:15 von letters
Hallo,
ich habe eine csv datei, die ich auslesen will. Klappt soweit auch. Mit
einem Haken. Der etzte Eintrag der csv ist leer.
Also wert1,"wert2",wert3,,wert5,
Nach Wert4 kommt noch ein Feld laut Überschrift, es enthält aber keine
daten. Wenn ich nun mittel php diese Datei aufsplitte, erhalte ich ein
Array mit 6 Einträgen. Das ist ok. Nur wenn ich nun die letzte Spalte
abfrage, sollte doch der Eintrag leer sein. Ist er aber nicht. Strlen gibt
an, es sind 2 Zeichen darin. Warscheinlich die Steuerzeichen für den
Zeilenumbruch. Ist auch nicht weiter schlimm. Ich will aber wissen, ob
dieses Feld in der csv einen Eintrag enthält oder nicht.
Jede Abfrage mit strlen(wert) == 0 oder wert == "" bringt nicht true als
Ergebnis. Nach wert != "\n" kann ich auch nicht fragen. Wie kann ich nun
feststellen, ob dort ein Wert drin steht oder das Feld leer ist? Kann ich
irgendwie die Steuerzeichen abfragen? Kann ich mir überhaupt ausgeben
lassen, was denn die 2 Zeichen sind die mir strlen() angibt?
mfg
Mathias
Re: CSV und leere Felder
am 30.08.2006 19:28:58 von Ulf Kadner
Mathias Fiedler wrote:
> ich habe eine csv datei, die ich auslesen will. Klappt soweit auch. Mit
> einem Haken. Der etzte Eintrag der csv ist leer.
> Also wert1,"wert2",wert3,,wert5,
> Nach Wert4 kommt noch ein Feld laut Überschrift, es enthält aber keine
> daten. Wenn ich nun mittel php diese Datei aufsplitte, erhalte ich ein
> Array mit 6 Einträgen.
Du splitest die Daten separat auf? Dann scheinst Du fgetcsv() nicht zu
kennen!
MfG, Ulf
Re: CSV und leere Felder
am 31.08.2006 09:34:57 von letters
Am Wed, 30 Aug 2006 19:28:58 +0200 schrieb Ulf Kadner:
> Mathias Fiedler wrote:
>
>> ich habe eine csv datei, die ich auslesen will. Klappt soweit auch. Mit
>> einem Haken. Der etzte Eintrag der csv ist leer.
>> Also wert1,"wert2",wert3,,wert5,
>> Nach Wert4 kommt noch ein Feld laut Überschrift, es enthält aber keine
>> daten. Wenn ich nun mittel php diese Datei aufsplitte, erhalte ich ein
>> Array mit 6 Einträgen.
>
> Du splitest die Daten separat auf? Dann scheinst Du fgetcsv() nicht zu
> kennen!
>
> MfG, Ulf
Was hab ich nur falsch gemacht? Geht das denn schon wieder los? Warum denn
nur? Wieso bekomme ich diese Antwort? Meine Frage war doch klar und
eindeutig und auch noch ausführlich beschrieben.
Du hast doch bei dem letzten Thread kräftig mitgemischt. Da ging es auch um
die csv Datei. Nur halt ein anderes Problem. Dort hatten wir schon geklärt,
das fgetcsv() für mich nicht in Frage kommt.
Die csv Dateien, die ich erhalte kommen aus unterschiedlichen Quellen. Die
sehen also vollkonmmen anders aus. Manchmal ist der Trenner ein ; manchmal
ein , manachmal auch ein | . Ich brauche für die Funktion also die Eingabe
des Trenners und als Besonderheit auch noch die Maskierung. Denn es kann
sein, das in dem Text das Trennzeichen ebenfalls nochmal vorkommt. Damit
aber dort nun keine Trennung erfolgt, wird das Zeichen Maskiert. z.B. \;
Nun kann aber auch das Maskierungszeichen ein anderes sein.
Die Ausgangsdatei kann ich nicht ändern. Daran kann ich nicht machen. Ich
muß also eine Möglichkeit finden, die csv Datei, egal wie auch immer die
gestaltet ist, aufzusplitten. Dabei ist mir fgetcsv() leider keine Hilfe.
Nun noch mal. Der letzte Eintrag in der csv Datei ist einfach leer. Wenn
ich aber eine Abfrage starte
if(array[$letzterIndex] == "")
wird das als false erkannt. PHP meint in dem letzten Feld ist was drin.
Die Abfrage strlen(array[$letzterIndex])
ergibt 2. Also steht in dem Arrayeintrag etwas, nur was? Eigentlich kann es
nur der Zeilenumbruch, also \n sein. Nur den wiederum kann ich nicht
abfragen. Zumindest weis ich nicht wie.
Min Problem ist, wie kann ich den richtigen Wert aus dem letzten
Arrayeintrag holen? Oder auch, wie kann ich mir die nicht sichtbaren
Zeichen wie z.B. \n anzeigen lassen, um herauszufinden, was php bei meiner
Abfrage nach strlen(array[$letzterIndex]) dort eigentlich als 2 zeichen
erkennt.
mfg
Mathias
Re: CSV und leere Felder
am 31.08.2006 09:49:20 von letters
Hat sich mittlerweile erledigt.
In dem leeren feld steht \r\n.
Deshalb die Anzeige als nicht leer. Und strlen mit 2.
Nun funktioniert auch die Abfrage nach == "\r\n"
Mathias
Re: CSV und leere Felder
am 31.08.2006 10:17:49 von Ulf Kadner
Mathias Fiedler wrote:
> Was hab ich nur falsch gemacht? Geht das denn schon wieder los? Warum denn
> nur? Wieso bekomme ich diese Antwort
und tschüss! Sorry das ich Dir antwortete! wird nicht mehr vorkommen
Re: CSV und leere Felder
am 31.08.2006 10:46:28 von letters
Am Thu, 31 Aug 2006 10:17:49 +0200 schrieb Ulf Kadner:
> Mathias Fiedler wrote:
>
>> Was hab ich nur falsch gemacht? Geht das denn schon wieder los? Warum denn
>> nur? Wieso bekomme ich diese Antwort
>
> und tschüss! Sorry das ich Dir antwortete! wird nicht mehr vorkommen
Tut mir ja leid, wenn Du jetzt beleidigt bist, aber Du hast die Frage doch
gelesen, oder? Du mußt mir schon zustimmen das Deine Antwort nichts mit der
Frage zu tun hatte. Warum also jetzt sauer sein?
Mathias
Re: CSV und leere Felder
am 31.08.2006 16:42:04 von Knut Kohl
Mathias Fiedler schrieb am 31. Aug 2006 in de.comp.lang.php.misc:
> Hat sich mittlerweile erledigt.
> In dem leeren feld steht \r\n.
> Deshalb die Anzeige als nicht leer. Und strlen mit 2.
> Nun funktioniert auch die Abfrage nach == "\r\n"
Brauchst Du nicht, wenn:
(Du machst wahrscheinlich so was in der Art...)
$data = file('file.csv');
foreach ($data as $line) {
## EINFÜGEN -->
$line = trim($line); // das entfernt jeglichen Zeilenbumbruch: \n, \r,
\r\n
## <-- EINFÜGEN
$arr = explode(.......
}
> Mathias
Knut
--
Newsoffice.de - Die Onlinesoftware zum Lesen und Schreiben im Usenet
Re: CSV und leere Felder
am 31.08.2006 20:49:42 von Frank Schenk
Mathias Fiedler schrieb:
> Tut mir ja leid, wenn Du jetzt beleidigt bist, aber Du hast die Frage doch
> gelesen, oder? Du mußt mir schon zustimmen das Deine Antwort nichts mit der
> Frage zu tun hatte. Warum also jetzt sauer sein?
>
> Mathias
Er kann dich nicht mehr lesen...
Siehe:
http://de.wikipedia.org/wiki/Killfile
bye
Frank