Announcement

Collapse
No announcement yet.

Text Datei auslesen und filtern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Text Datei auslesen und filtern

    Hallo,

    ich möchte eine Text Datei auslesen und auf einer Webseite anzeigen.
    Das nachfolgende Script liest die gesamte Text Datei ein

    PHP Code:
    <?php
    // Datei öffnen zum lesen und schreiben
    $handle fopen ("http://api.ivao.aero/getdata/whazzup/whazzup.txt""r");
     
    while ( 
    $inhalt fgets ($handle4096 ))
    {
      echo 
    "<li> $inhalt </li>";
    }
     
    fclose($handle);
    ?>
    Hier ein Beispiel einer Zeile

    KLM224:445170:445170:PILOT::66.2629:24.9644:19319:246:1/A320/M-SDRWY/S:M080:EFRO:F360:ENBR:EU8:B:4:1200:0:50:0:I:1445:1445:2:35:3:40:ZZZZ:RMK/KLMVA:BESLA:::::::20150410142538:IvAp:2.0.2:2:4::G:250: 227:0:9:A320AIBWL

    Die komplette Datei umfasst mehr als 100 Zeilen, diese sollen nach dem rot markiertem Text gefiltert werden, das grün markierte soll ausgegeben werden.
    Ich finde dazu keine Lösung.

    Danke für die Hilfe

    LG
    Reiner

  • #2
    Auf Basis dieser Anforderung wird Dir kaum jemand helfen können.
    Ein Algo "Filter nach dem roten und nimm dann das grüne" wäre ein Ansatz aber gleichzeitig schon das Ende. Ich kenne keine Verfahren, die reine Textdateien nach Farbe filtern könnten.
    Woher kommen die Farben? Nach welchen Kriterien hast Du sie eingefärbt. Wenn Du das beschreiben kannst, bist Du der Lösung ein Stück näher oder auch der Unterstützung im Forum.
    Gruß, defo

    Comment


    • #3
      Sorry, wenn ich mich so schwer verständlich ausgedrückt haben sollte,

      die farblichen Markierungen habe ich zur besseren Übersicht gesetzt.

      Die gesamte Text Datei soll nach dem in rot markiertem Text durchsucht werden. Nur Zeilen, mit diesem Eintrag, dürfen ausgewertet werden

      Der grün markierte Text, der Zeile, soll dann auf der Webseite zur Anzeige kommen.

      Gruss, Reiner

      Comment


      • #4
        Ich versuchs nochmal mit anderen Worten. Nach welchen Kriterien hast du die Textteile grün markiert. Das ist die Grundlagen auf deren du einen Algorithmus entwickeln kannst. Das kann man aber anhand einer speziellen Zeile eines ansonsten allgemeinen Formats nicht machen. Es muss schon eine echte Formatbeschreibung her.
        Wenn es die nicht gibt kann es auch keinen Algorithmus geben.

        Comment


        • #5
          Der Algorithmus, den ich brauche, soll den Text an der grün markierten Position zur Anzeige bringen.

          Comment


          • #6
            Wenn die Zeile
            RMK/KLMVA
            enthält sollen die grün markierten Teile ausgegeben werden?

            Splitten des Strings anhand des ":"
            Durchlaufen des Arrays ob das Rote enthalten ist (oder an der Position nachschauen)
            Dann das Grüne ausgeben.
            Letztres benötigt noch eine genaue Spezifizierung: Ist das immer an der gleichen Position? Wie findet man das?
            Zuletzt editiert von Christian Marquardt; 10.04.2015, 18:42.
            Christian

            Comment


            • #7
              Hallo Christian,

              Die Text Datei wird alle 3Min vom IVAO Netzwerk erneuert. Sie enthält alle Clients, die im Netzwerk eingeloggt sind.
              Splitten nach : ist korrekt. Die Daten stehen immer an der gleichen Stelle.

              Comment


              • #8
                Dann ist es doch einfach:

                Splitten nach ":"
                Schauen ob in Position x "RMK/KLMVA" steht
                Wenn ja Positionen der Grünen Teile auslesen und ausgeben

                :1/A320/M-SDRWY
                Musst du dann entweder mit der Stringverarbeitung arbeiten und das erste / und das zweite / suchen oder einen regulären Ausdruck anwenden.Dieser würde lauten

                .*/(.*)/.*

                und gibt in der group1 A320 zurück

                Habe jetzt nicht die Positionen ausgezählt....
                Christian

                Comment


                • #9
                  Das aufsplitten habe ich hin bekommen.

                  Aber ich bekomme den
                  Code:
                  $array[29]
                  nicht auf den Inhalt von RMK/KLMVA Überprüft.

                  Denn neben meiner gesuchten Auswahl steht noch mehr da drinn.

                  z.B.
                  :RMK/KLMVA / TCAS EQUIPPED // FS PASSENGERS // AMERICAN AIRLINES VIRTUALNET // MIA CREW // WORLD TOUR // DEFAULT SCENERY


                  Vielleicht sitze ich aber auch schon zu lange vor dem Viereck

                  Reiner

                  Comment


                  • #10
                    Das ist etwas anderes, als im ersten Post steht.

                    Ggf. im Teilstring suchen -> stripos
                    Christian

                    Comment


                    • #11
                      Hallo,

                      Dafür ist fgetcsv() besser geeignet, als fgets()
                      PHP Code:
                      $aStringsToBeDisplayed = array();


                      while( 
                      $aRowData fgetcsv($handle4096':' ) ) {
                          
                          
                      $iNeedlePos strpos$aRowData[29], 'RMK/KLMVA' );

                          if ( 
                      false !== $iNeedlePos ) {

                             
                      $aStringsToBeDisplayed[] = array( $aRowData[0], $aRowData[2], $aRowData[9], $aRowData[11], $aRowData[13] );

                          }

                      }


                      var_dump$aStringsToBeDisplayed ); 
                      Den Wert aus Index 9 musst Du dann nochmal beim Slash auftrennen und den entsprechenden SubIndex ziehen.
                      PHP rocks!
                      Eine Initiative der PHP Community

                      Comment


                      • #12
                        Hallo habe das Problem in der Grobstruktur jetzt so gelöst.
                        Nicht mit dargestellt habe ich die tabellarische Ausgabe .


                        PHP Code:
                        <?php


                        $toFind 
                        "XXXVA"// Suchbegriff
                        $lines file("GENERAL.txt"); // Datei

                        // array nach suchbegriff filtern
                        $lines array_filter($lines, function($el) use ($toFind) {
                                                        
                        // stripos() = Groß-Kleinschreibung egal, sonst strpos()
                                                        
                        return ( stripos($el$toFind) !== false );
                                              });

                        // ausgeben
                        foreach($lines as $line) {
                            
                        $parts explode(":"$line);
                            
                        $aircraft substr($parts[9], 24);
                            echo  
                        $parts[1]."<br>".$parts[2]."<br>".$parts[5]."<br>".$parts[6]."<br>".$aircraft."<br>".$parts[8]."<br>".$parts[11]."<br>".$parts[13]."<br>";





                        }
                        ?>
                        Zuletzt editiert von Ghost66; 16.04.2015, 14:06.

                        Comment


                        • #13
                          Ich möchte aus den gewonnenen Daten ein Anzeige für Google Maps erzeugen.

                          Leider habe ich dazu noch keine Informationen gefunden, wie man eine variabele Anzahl an Positionen darstellt.
                          Dazu kommt noch, dass das alles unter Java läuft, und davon habe ich keine Ahnung.

                          Dazu tauchen natürlich Fragen auf, wie
                          wie übergibt man Daten aus PHP an JAVA?
                          Übergibt man die Daten aus einem Script heraus, oder speichert man diese erst in einer Datenbank?
                          kann man überhaupt eine variable Anzahl an Positionen mit Google Maps darstellen?

                          Danke für eure Informationen.

                          LG Reiner

                          Comment


                          • #14
                            https://developers.google.com/maps/?hl=de


                            "wie übergibt man Daten aus PHP an JAVA?" -> URL (GET/POST), Webservice
                            "Übergibt man die Daten aus einem Script heraus, oder speichert man diese erst in einer Datenbank?" -> kommt auf die Anforderung an
                            "kann man überhaupt eine variable Anzahl an Positionen mit Google Maps darstellen?" -> ja
                            Zuletzt editiert von Christian Marquardt; 16.04.2015, 17:17.
                            Christian

                            Comment


                            • #15
                              Ich habe mich entschieden die Daten in einer Datenbank zu speichern, zumal ich zwei ARRAYS zu einer Entfernungsberechnung benötige.
                              Diese Daten werden in lat/long angegeben
                              :43.6152:1.36002.

                              Leider lassen sie sich nicht in die Datenbank eintragen. Die Spalte ist als "FLOAT" definiert, was eigentlich dem Format entsprechen sollte.
                              Trotzalledem wird in die Datenbak nichts eingetragen wenn, ich diese beiden daten einfügen will. Ohne wird alles eingetragen.

                              LG Reiner

                              Comment

                              Working...
                              X