Ankündigung

Einklappen
Keine Ankündigung bisher.

preg_match und CSV Datein

Einklappen

Neue Werbung 2019

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

  • preg_match und CSV Datein

    Hallo liebe PHP gemeinde,

    im moment versuche ich mir ein Script zu basteln, dass eine CSV Datei einliest. - funktioniert.

    Nun möchte ich das nach jedem 16. ; eine neue Zeile kommt.

    habe mal preg_match ausprobiert doch leider verstehe ich das nicht ganz kann mir da vllt jemand weiter helfen. hier mal mein code soweit.

    PHP-Code:
    <?php

        $csv_datei 
    "item.csv";

        
    $felder_trenner ";";

        
    $zeilen_trenner " ";
        if (@
    file_exists($csv_datei) == false) {

            echo 
    'Die CSV Datei: '$csv_datei.' gibt es
                nicht!'
    ;
        } else {
            
            
    $datei_inhalt = @file_get_contents($csv_datei);
          
            
    $zeilen explode($zeilen_trenner,
                
    $datei_inhalt);
            
            
    $anzahl_zeilen count($zeilen);
           
            echo 
    'Es wurden in der CSV Datei: '.
                
    $csv_datei.' insgesamt
                '
    .($anzahl_zeilen-1).' Zeilen gefunden.<br>';
                
                
    $suchmuster ';';
        
    // hier nun prag_match(suche nach ; und mache nach jedem 16. ; ein \n)        

        
    }
    ?>

  • #2
    Hallo,

    schau dir mal die Funktion fgetcsv anhttp://php.net/manual/de/function.fgetcsv.php

    Das ganze spart dir sehr viel Zeit.
    Beispiel 1 ist sehr anschaulich.

    Kommentar


    • #3
      Hi danke dir, das hatte ich mir schon mal angesehen, mir gehts ja hierbei das ich nach jedem 16. ; einen Zeilenumbruch mache. haste hierzu einen Tipp? oder kann ich das auch mit fgetcsv realisieren?

      Kommentar


      • #4
        Keine Ahnung, ob fgetcsv() da was kann, sonst bliebe noch ein dirty workaround:
        PHP-Code:
        $csvFileContent file_get_contents$csvFileName );
        $sixteenPartsArray array_chunkexplode(';'$csvFileContent), 16 ); 
        ABER: Grundsätzlich halte ich Deine CSV für strukturell unangebracht!
        Zumindest erschliesst sich mir der Sinn des ganzen nicht...

        Kommentar


        • #5
          dann mal kurz zum background:

          ich und ein paar leute sind dabei ein spiel zu übersetzten und haben eine Items.dat ist im csv format aufgebaut. Leider ist alles in einer Zeile und nach jedem 16. ; fängt ein neues item an, daher möchte ich mir das so aufbauen lassen damit es einfacher ist zum übersetzen =)

          Danke für den Workaround werde ihn mal ausprobieren.

          Kommentar


          • #6
            Na dann könnt ihr ja nichts für die CSV...
            Der Workaround sollte aber helfen...

            Kommentar


            • #7
              das muss ich jetzt noch durch eine foreach durchhauen das ich das ausgegeben bekomme richtig?

              ich glaub da muss ich nochmal basics studieren

              PHP-Code:
              $csvFileName "item.csv";
              $csvFileContent file_get_contents$csvFileName ); 
              $sixteenPartsArray array_chunkexplode(';'$csvFileContent), 16 );
              foreach(
              $sixteenPartsArray as $arrayparts)
                echo 
              $arrayparts,"<br />"
              Output:

              Array
              Array
              Array
              usw...

              Kommentar


              • #8
                Das ist auch logisch, schau Dir mal das Ergebnis an:
                PHP-Code:
                $csvFileName "item.csv"
                $csvFileContent file_get_contents$csvFileName );  
                $sixteenPartsArray array_chunkexplode(';'$csvFileContent), 16 ); 

                echo 
                '<pre>'print_r$sixteenPartsArray ); 
                Du bekommst Deine Anzahl der "gefundenen" Zeilen ganz einfach über count():
                PHP-Code:
                echo count$sixteenPartsArray ); 
                Jede "Zeile" besteht wiederum aus genau 16 Einträgen (bis auf die letzte evtl.), die als Array hinterlegt sind.
                Wenn Du die "Zeilen" ausgeben möchtest, hilft implode() Dir evtl. weiter:
                PHP-Code:
                foreach( $sixteenPartsArray as $lineArray ) {
                    echo 
                implode';'$lineArray ) . '<br />';

                Kommentar


                • #9
                  vielen vielen dank, und was gelernt habe ich auch noch. =) *daumen hoch*

                  Kommentar

                  Lädt...
                  X