Ankündigung

Einklappen
Keine Ankündigung bisher.

csv aus zip mit Zeilenumbrüchen auslesen

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • csv aus zip mit Zeilenumbrüchen auslesen

    Hallo zusammen,
    ich sitze gerade an einer Seite, die aus einer csv-Datei eine pdf-Datei machen soll. Diese csv-Datei ist in einer zip-Datei. Ich suche gerade eine Möglichkeit, diese vernünftig auszulesen (wie bei file()), allerdings habe ich das bis jetzt nur ohne Zeilenumbrüchen geschafft. Kann mir da jemand einen Tipp geben? Ich möchte diese csv-Datei dann als Array weiterverarbeiten. Wenn die csv-Datei nicht in einer Zip ist, schaffe ich es problemlos mit
    PHP-Code:
    $array array_map('str_getcsv'file('data/'.$filename)); 
    allerdings will ich die zip-Datei nicht entpacken.



    Die csv-Datei ist folgendermaßen aufgeteilt:

    Code:
    Überschrift 1, Überschrift 2, Überschrift 2
    Value 1.1, Value 1.2, Value 1.3
    Value 2.1, Value 2.2, Value 2.3

    Momentan lese ich mit den folgenen Befehlen:

    PHP-Code:
    $target = new ZipArchive();
    if(
    $target->open("data/Adressen.zip") === true){
        for(
    $i 0$i $target->numFiles$i++){
            
    $stat $target->statIndex($i);
            
    $filename $stat['name'];
            
    $rawfilename substr($filename0, -4);
            
    $rawfilecontent $target->getFromIndex($i);
            
    //Hier kommt nur etwas ohne Zeilenumbrüche raus, desswegen funktioniert der folgene Befehl nicht
            
    $rawread str_getcsv($rawfilecontent);

            
    //Ich habe es hier auch nochmal mit array_chunk probiert (klappt auch erst einmal super),
            //allerdings werden hier die Zeilenumbrüche nicht berücksichtigt, weil am Ende einer Zeile kein ',' steht.
            
    var_dump(array_chunk($rawread14));


            
    //hier würde ich die csv-Datei in ein für mich verwertbares Array speichern
            
    foreach ($rawread as $key => $value) {
                if(
    $key !== 0){
                    
    $fertig[$rawfilename][] = array($rawread[0][0] => $value[0],
                        
    $rawread[0][1] => $value[1],
                        
    $rawread[0][2] => $value[2],
                        
    $rawread[0][3] => $value[3],
                        
    $rawread[0][4] => $value[4],
                        
    $rawread[0][5] => $value[5],
                        
    $rawread[0][6] => $value[6],
                        
    $rawread[0][7] => $value[7],
                        
    $rawread[0][8] => $value[8],
                        
    $rawread[0][9] => $value[9],
                        
    $rawread[0][10] => $value[10],
                        
    $rawread[0][11] => $value[11],
                        
    $rawread[0][12] => $value[12],
                        
    $rawread[0][13] => $value[13]);
                }
            }
        }


    Das wäre echt super, wenn mir hier jemand helfen könnte.


  • #2
    str_getcsv akzeptiert nicht eine gesamte Datei, sondern nur eine CSV-Zeile. Du must also $rawfilecontent in Zeilen splitten und dann mit foreach über alle Zeilen gehen.
    PHP-Klassen auf jspit.de und github

    Kommentar


    • #3
      Kannst es alternativ auch via splFileObject machen: https://www.php.de/forum/webentwickl...83#post1512883
      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar


      • #4
        Anmerkung splFileObject:
        allerdings will ich die zip-Datei nicht entpacken.
        Um splFileObject für einen String zu nutzen sind einige 'Zusatzaktionen' notwendig.

        Edit: OneZeroByte
        Wenn deine Orginaldatei Zeilenumbrüche enthält, also so ausschaut wie du es #1 gezeigt hast, dann sind diese Zeilenumbrüche auch in $rawfilecontent drin.
        Dann kannst du auch mit explode splitten falls die Zeilenendezeichen bekannt sind oder du must mit preg_split arbeiten.
        PHP-Klassen auf jspit.de und github

        Kommentar


        • #5
          Vielen Dank für eure Hilfe, leider konnte ich diese Hinweise nicht verwenden (Hat irgendwie nicht so ganz geklappt). Ich habe jetzt allerdings eine andere Lösung gefunden, die allerdings auch etwas umständlicher ist

          Kommentar

          Lädt...
          X