Strohhalm

Sprung zu Navigation. Sprung zu Privat. Sprung zu Linktipps. Sprung zu StyleSwitcher. Sprung zum Inhalt.

 

Sprung zu Navigation. Sprung zu Privat. Sprung zu Linktipps. Sprung zu StyleSwitcher. Sprung zum Inhalt.

Privat

 

Anmelde-Formular



Als Strohhalm-Mitglied registrieren.

 

Sprung zu Navigation. Sprung zu Privat. Sprung zu Linktipps. Sprung zu StyleSwitcher. Sprung zum Inhalt.

Linktipps

 

passende Links in der aktuellen Rubrik

Apache 1.3 URL Rewriting Guide.20.04.2005, 01:52
Eigentlich die Referenz-Seite zu dem Apache Modul mod_rewrite, dem Schweizer Taschenmesser unter den…
SELFHTML - html /css/js.15.04.2005, 18:34
Die Kult Referenz wenn es um Fragen zu HTML / CSS / JavaScript geht.…
PHP Security Consortium.15.04.2005, 17:47
Consortium, u.a. unterstützt von der PHP-Entwicklergemeinschaft, die sich mit der Sicherheit im…
Ruby on Rails.06.01.2006, 18:08
Ruby-basiertes Webanwendungsframework. Optimized for programmer happiness.…
PHP-Mailer.15.04.2005, 17:44
Eine wunderbare PHP-Klasse für das versenden von Mails. Features: # Can send emails with multiple…

Insgesamt sind 25 Links in dieser Kategorie

 

Sprung zu Navigation. Sprung zu Privat. Sprung zu Linktipps. Sprung zu StyleSwitcher. Sprung zum Inhalt.

Sprung zu Navigation. Sprung zu Privat. Sprung zu Linktipps. Sprung zu StyleSwitcher. Sprung zum Inhalt.

Forum

 

strohhalm.org / Forum / Forenübersicht / Programmierung Serverseitig / Nachricht 2796 lesen

mit PHP eine CSV-Datei importieren - inkl. Stolperfallen

  1. mit PHP eine CSV-Datei importieren - inkl. Stolperfallen

    RettH.+0 -0.30. April 2011, 17:40

    Moin Moin!

    Ich möchte eine CSV-Datei aus einer Lexware-WaWi in ein PHP-Projekt importieren. An sich kein Problem, aber nach über 6 Stunden probieren… Folgende Problematik stellte sich ein:

    - In der ersten Zeile sind die Felder definiert: "Feld1";"Feld2";"Feld3";… (kein Problem)
    - Ab der zweiten Zeile kommen die Daten, …
    … manchmal jedoch über zwei Zeilen (Muster B);
    … innerhalb des Limiters (") können auch " (Muster A) vorkommen;
    … natürlich können Felder auch Leer sein (Muster C);
    … und der Separator (;) kann ebenfalls innerhalb von Limiter (") (Muster D) vorkommen
    … und zu guter Letzt kann auch alles verquickt sein (Muster E).

    Hier die Musterzeilen (alle Zeilen haben 5 FELDER):

    a) "abc";0.1;N;"Das ist eine "grandiose" Beschreibung";"abc"
    b) "abc";0.2;N;"Das ist eine

    dämliche Beschreibung";"abc"
    c) ;;"abc";;
    d) 9.01;"Eigenschaften: a, b; usw.";"blubb";;1
    e) ;"Ein "Unwort"; Aber…";2;"
    Umbruch…";""

    Meine Routine hat eigentlich soweit geklappt, bis ich feststellen musste, dass es auch Datensätze mit Umbruch (Muster B und E) gibt und entsprechend nicht die komplette Zeile an die Funktion übergeben wurde. Hier würde mir die Info fehlen, wieviel weiter Zeilen ich übergeben muss, bis der DS voll ist, da der Separator ja auch im Text vorkommen kann, fällt substr_count() auch irgendwie flach. Auch den gesamten String zu übergeben bringt die Probleme mit sich, wenn z.B. das letzte Feld einer Zeile leer ist und das nächste in der Neuen auch, wird es am Ende nur als ein Feld interpretiert usw..

    Hat von Euch jemand eine Lösung für dieses Desaster?

    Vielen Dank und Grüße

    Antworten [/forum/index.php?topic=2796&strukturid=2796&action=newEntry]

  2. Re: mit PHP eine CSV-Datei importieren - inkl. Stolperfallen

    wahsaga.+0 -0.30. April 2011, 20:03

    Das Problem mit den Umbrüchen innerhalb der Daten ist durch fgetcsv längst gelöst.

    Das mit den Anführungszeichen innerhalb mit Anführungszeichen umkleideter Feldwerte ist allerdings etwas problematisch, wenn da kein Escaping durchgeführt wird. (Dann wäre es allerdings frech vom erzeugenden System, das überhaupt als „CSV“ zu bezeichnen.)

    Antworten [/forum/index.php?topic=2796&strukturid=2796&action=newEntry]

  3. Re: mit PHP eine CSV-Datei importieren - inkl. Stolperfallen

    RettH.+0 -0.30. April 2011, 21:45

    Etwas weiter hat mich fgets nun doch gebracht. Die Daten werden in der Tat ziemlich sauber eingelesen - hätte ich nicht gedacht (weil: siehe die verschiedenen Muster), weshalb ich auch an der eigenen Funktion gearbeitet hatte.

    Beim Einlesen erhalte ich folgende Ergebnisse:

    CSV-Datei: ..;"1/4" ABC…";…
    Array-Ergebnis: 1/4 ABC…" (exakt so mit den Anführungszeichen)

    oder

    CSV-Datei: …;"ich glaub… Das Feld soll jedenfalls "Beschreibung" - laut Lexware…";…
    Array-Ergebnis: ich glaub… Das Feld soll jedenfalls Beschreibung" - laut Lexware…"

    Also sind die Anführungszeichen nicht maskiert. Könntest Du oder jemand anders mir vllt. ein Regulären für z.B. preg_replace schreiben, der die " innerhalb eines regulären Datensatzes "xxx" mit &quote; maskiert? Hier gibt es ja nur die vier Varianten: "xxx";… oder …;"xxx" oder ..;"xxx";… oder "xxx" wo innerhalb xxx die " maskiert werden müssten. Damit wäre eigentlich alles perfekt.

    Ich weiß… Aber ich lern die Dinger nicht mehr - Hopfen und Malz sind verloren. ;-)

    Grüße

    Antworten [/forum/index.php?topic=2796&strukturid=2796&action=newEntry]

 
Nach oben springen

.(c) 2002 - 2019 strohhalm.org Community.Server powered by Manitu.Software powered by Mathias Bank
.Impressum + Team.Datenschutz