Ankündigung

Einklappen
Keine Ankündigung bisher.

Textdatei mit fester Stellenanzahl einlesen

Einklappen

Neue Werbung 2019

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

  • Textdatei mit fester Stellenanzahl einlesen

    Hallo liebes Forum,

    da ich mehr der IT-ler bin und nicht der Programmierer, wollte ich Euch fragen, ob Ihr mir helfen könnt - wahrscheinlich für Euch ein Klacks
    Ich habe eine txt-Datei (dki.txt) die auf einem Serverpfad liegt.
    Hierin sind Kurse enthalten nach folgendem Aufbau:

    ALL126.01900000126.01900000126.0190000028.06.1813. 43
    AMD557.70500000557.70500000557.7050000028.06.1813. 43
    ARS31.78280000031.68280000031.88280000028.06.1813. 43
    AUD1.57800000001.55300000001.603000000028.06.1813. 43
    AZN1.97100000001.97100000001.971000000028.06.1813. 43
    BAM1.95580000001.95280000001.958800000028.06.1813. 43
    BDT97.64000000095.44000000099.84000000028.06.1813. 43
    BGN1.95580000001.92080000001.990800000028.06.1813. 43

    Aufbau ist wie folgt: 3 Stellen ISO Code
    12 Stellen Mittelkurs
    12 Stellen Geldkurs
    12 Stellen Briefkurs
    8 Stellen Datum
    4 Stellen Uhrzeit

    Heisst, so müsste die Textdatei ausgelesen werden.
    Könnt Ihr mir helfen?
    Lieben Dank an Euch alle.


  • #2
    Aufbau ist wie folgt
    keine leerzeichen? beim bild gibts leerzeichen/tabs
    ich würde das dann mit
    http://php.net/manual/de/function.fgetcsv.php
    machen ....

    Kommentar


    • #3
      Vermutlich ohne Leerzeichen/Tabs. Das Bild ist die HTML-Tabelle welches er als Ergebnis haben möchte. Aufbau oder Musterdaten sind immer noch fehlerbehaftet (Leerzeichen in der Zeit zuviel? + die Zeit hat wohl 5 Zeichen).

      Kommentar


      • #4
        Zitat von jspit Beitrag anzeigen
        Vermutlich ohne Leerzeichen/Tabs. Das Bild ist die HTML-Tabelle welches er als Ergebnis haben möchte. Aufbau oder Musterdaten sind immer noch fehlerbehaftet (Leerzeichen in der Zeit zuviel? + die Zeit hat wohl 5 Zeichen).
        Da ist die Quelldatei immer gleich aufgebaut wie mit der Stellanzahl beschrieben: 3, 12, 12, 12, 8, 5:

        AED4.28800000004.22800000004.348000000012.07.1813. 04
        ALL125.93750000125.93750000125.9375000012.07.1813. 04
        AMD561.82800000561.82800000561.8280000012.07.1813. 04
        ARS32.00350000031.90350000032.10350000012.07.1813. 04
        AUD1.58100000001.55600000001.606000000012.07.1813. 04
        AZN1.98600000001.98600000001.986000000012.07.1813. 04
        BAM1.95580000001.95280000001.958800000012.07.1813. 04
        BDT98.18000000095.980000000100.3800000012.07.1813. 04
        BGN1.95580000001.92080000001.990800000012.07.1813. 04
        BHD0.44240000000.43240000000.452400000012.07.1813. 04
        BND1.58450000001.58450000001.584500000012.07.1813. 04
        BOB8.06700000008.06700000008.067000000012.07.1813. 04
        BRL4.52670000004.41670000004.636700000012.07.1813. 04

        In der TXT sieht es gleich aus, nur hier verschiebt sich das in der Ansicht - in der Originaldatei sind KEINE Leerzeichen, alles Fließtext.

        Kommentar


        • #5
          Quick and dirty:

          PHP-Code:
          <html>
            <body>
              <table>
          <?php
            $fileContent 
          file_get_contents('dki.txt');
            
          $zeilen explode("\r\n"trim($fileContent));

            foreach (
          $zeilen as $zeile) {
                echo 
          '<tr>';
                echo 
          '<td>' substr($zeile03) . '</td>';
                echo 
          '<td>' substr($zeile312) . '</td>';
                echo 
          '<td>' substr($zeile1512) . '</td>';
                echo 
          '<td>' substr($zeile2712) . '</td>';
                echo 
          '<td>' substr($zeile398) . '</td>';
                echo 
          '<td>' substr($zeile475) . '</td>';
                echo 
          '</tr>';
            }

          ?>
              </table>
            </body>
          </html>
          sorry, shift-taste kaputt

          Kommentar


          • #6
            sscanf kann hier ebenso eingesetzt werden.

            PHP-Code:
            ;<?PHP
            $str 
            'AED4.28800000004.22800000004.348000000012.07.1813.04';

            $serial sscanf($str"%3s%12f%12f%12f%8s%5s");

            var_dump($serial);
            ?>
            ergibt
            Code:
            array (size=6)
              0 => string 'AED' (length=3)
              1 => float 4.288
              2 => float 4.228
              3 => float 4.348
              4 => string '12.07.18' (length=8)
              5 => string '13.04' (length=5)

            Kommentar


            • #7
              Gute Idee

              PHP-Code:
              <html>
                <body>
                  <table>
              <?php
                $fileContent 
              file_get_contents('dki.txt');
                
              $rows explode("\r\n"trim($fileContent));

                foreach (
              $rows as $row) {
                  echo 
              '<tr>';
                  
              $rowData sscanf($row"%3s%12f%12f%12f%8s%5s");
                  foreach(
              $rowData as $data) {
                    echo 
              '<td>' $data '</td>';
                  }
                  echo 
              '</tr>';
                }
              ?>
                  </table>
                </body>
              </html>
              sorry, shift-taste kaputt

              Kommentar


              • #8
                Meister1900
                Was hat das HTML und die Tabelle denn darin zu suchen?
                fester Stellenanzahl einlesen
                nicht ausgeben und warum beachtest du dann nicht wenigstens das EVA-Prinzip?
                Ist ja kein Wunder wenn so vieles falsch vermittelt wird und es dann für immer im Netz steht, dass die Anfänger dies alles kopieren und uns dann zur Nachbearbeitung servieren.

                Kommentar


                • #9
                  protestix
                  Im ursprünglichen Thread hat er geschrieben:
                  Hier mal ein "manuell" gebasteltes HTML wie es nach dem Einlesen aussehen soll
                  Ich hatte ja geschrieben "quick and dirty". Es steht dir ja frei, ein besseres Beispiel unter Beachtung des EVA-Prinzips zu posten.
                  sorry, shift-taste kaputt

                  Kommentar


                  • #10
                    Zitat von frederic1975 Beitrag anzeigen
                    Aufbau ist wie folgt:
                    3 Stellen ISO Code
                    12 Stellen Mittelkurs
                    12 Stellen Geldkurs
                    12 Stellen Briefkurs
                    8 Stellen Datum
                    4 Stellen Uhrzeit
                    Zitat von frederic1975 Beitrag anzeigen
                    Da ist die Quelldatei immer gleich aufgebaut wie mit der Stellanzahl beschrieben: 3, 12, 12, 12, 8, 5
                    Was denn nun?

                    Zudem:
                    Zitat1: 51 Stellen
                    Zitat2: 52 Stellen
                    Diese Zeile (inkl. dem angeblich nicht vorhandenen Leerzeichen):
                    Code:
                    BRL4.52670000004.41670000004.636700000012.07.1813. 04
                    53 Stellen

                    Kommentar

                    Lädt...
                    X