Daten aus Textdatei auslesen u. sortieren

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

  • Daten aus Textdatei auslesen u. sortieren

    Hallo zusammen,

    ich bin absoluter Neuling und würde mich freuen, wenn mir jemand bei folgender Sache behilflich sein könnte.

    Ich habe eine Textdatei (.txt), die wie folgt aussieht:

    00:00:12:34
    Person A
    Guten Tag!

    00:00:12:36
    Person B
    Oh hallo, Du hier?

    00:00:12:40
    Person A
    Ja warum nicht?

    00:00:12:48
    Person C
    Ich bin auch da.


    usw. usw.


    Es handelt sich hierbei um ein Skriptbuch für einen Spielfilm, Person A, B und C (und weitere folgende Rollenbezeichnungen) stehen für je eine Rolle. Die Zahlen stellen den Timecode dar, wann die Figur etwas sagt.

    Ziel ist es, aus der Textdatei die Daten so rauszuholen, dass im Idealfall mehrere Dateien "entstehen", in denen die Timecodes den jeweiligen Rollen zugeordnet sind. Also so zum Bsp.:

    Person A
    00:00:12:34
    00:00:12:40

    Person B
    00:00:12:36

    usw.

    Geht so etwas? Ich habe das Netz abgesucht, bin aber leider nicht fündig geworden, da es mit Sicherheit keine vorgefertigte Lösung gibt...

    Wie gesagt, ich würde mich freuen, wenn sich jemand dafür interessiert und mir helfen kann.

    Tausend Dank im voraus!!

    Viele Grüße aus Berlin,
    jill21

  • #2
    Hi,

    hast du schon nen Ansatz?!? Hier findest Du ein recht einfaches Tut dazu:

    PHP-Einfach.de - PHP Tutorial - Datei auslesen

    mfg streuner
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
    der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

    "Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"

    Kommentar


    • #3
      Hallo streuner,

      das Tut habe ich mir angesehen (ich bin ein Newbie!!); das Problem liegt aber schon ganz am Anfang: die Textdatei ist ja fertig; müsste ich jetzt sämtliche Daten neu tippen in dieser Schreibweise mit dem | ? Das wäre extrem ungünstig, da es sich um ca. 100 Seiten Text handelt...

      Danke Dir im voraus,
      jill21

      Kommentar


      • #4
        Hi

        müsste ich jetzt sämtliche Daten neu tippen in dieser Schreibweise mit dem | ?
        Ne, du musst aber schon irgendwie ein "Trennzeichen" haben, damit man das vernünftig auslesen kann! Wenn Du das nur über "Absätze" machen kannst, musst du das beim auslesen mal mit preg_match (PHP: preg_match - Manual) schauen, ob das geht!?

        mfg streuner
        Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
        der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

        "Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"

        Kommentar


        • #5
          Lieber streuner,

          puh, ich hatte (insgeheim) auf eine hopp-schnipp-bumm-fertig-Lösung gehofft, die auch ich hinbekomme; das Ganze klingt kompliziert(er) und für's Probieren lässt der Auftraggeber keine Zeit. Ich komme eigentlich aus dem gestalterisch-grafischen Bereich... PHP ist ganz neu. Ich danke Dir dennoch herzlich,

          Grüße aus Berlin
          Natalie

          Kommentar


          • #6
            Zitat von jill21 Beitrag anzeigen
            Lieber streuner,

            puh, ich hatte (insgeheim) auf eine hopp-schnipp-bumm-fertig-Lösung gehofft, die auch ich hinbekomme; das Ganze klingt kompliziert(er) und für's Probieren lässt der Auftraggeber keine Zeit. Ich komme eigentlich aus dem gestalterisch-grafischen Bereich... PHP ist ganz neu. Ich danke Dir dennoch herzlich,

            Grüße aus Berlin
            Natalie
            Hallo Natalie,

            Du könntest Deine Daten auch nach Zeilenumbrüchen trennen. Dies setzt allerdings voraus, dass die Daten so wie in Deinem beispiel durchgehend in der Datei vorhanden sind.

            Kurzes Beispiel des Musters, welches ich meine:
            Code:
            Uhrzeit
            Sprecher
            Text
            Diese Blöcke sind jeweilg durch zwei Zeilenumbrüche voneinander getrennt. Bei diesem Beispiel darf der Text im Grund genommen erstmal keine Zeilenumbrüche trennen.

            Du kannst die Datei mittels PHP, z.B. file_get_contents(), einlesen und dann entsprechend aufsplitten. Zunächst trennst Du die einzelnen Datenblöcke voneinander. Ein Datenblock ist nach Deinem Beispiel immer durch zwei Zeilenumbrüche von einem anderen getrennt. Demnach splittest Du auch die eingelesenen Daten.

            Beispiel:
            PHP-Code:
            $data explode("\n\n"$meinEingelesenerDateiInhalt); 
            Dobald Du die einzelnen Datensätze extrahiert hast, kannst Du die einzelnen Daten weiter aufsplitten, da sowohl Zeit, Sprecher und Text widerum mit einem Zeilenumbruch voneinander getrennt sind (immer vorausgesetzt, dass der darzustellende Text keine Zeilenumbrüche enthält).

            Beispiel:
            PHP-Code:
            foreach ($data as $element) {
                
                list(
            $datum$sprecher$text) = explode("\n"$element);
                echo 
            "Datum: " $datum "\n";
                echo 
            "Sprecher: " $sprecher "\n";
                echo 
            "Text: " $text "\n\n";

            Alle Angaben ohne Gewähr, weil's ungetestet ist.

            PS: Nach Zeileumbrüchen Daten zu splitten ist jetzt nicht unbedingt die feine Art. Du solltest zukünftig wirklich die von Streuner erwähnten Trennzeichen verwenden.
            Zuletzt geändert von ezkimo; 15.02.2012, 17:26.
            MM Newmedia | MeinBlog

            Kommentar


            • #7
              Hallo,

              (in Ergänzung zu ezkimos Vorschlag):

              Wenn der gesprochene Text doch Umbrüche enthält, kann man auch preg_split() mit einem Pattern wie "<(?:\\n|\\r\\n?)+(?=\\d{2}(?::\\d{2}){3})>" verwenden. Die so erhaltenen Datensätze kann man dann mit explode() weiter zerlegen, wobei man das dritte Argument beachten sollte, mit dem man festlegen kann, wieviele Teilstücke maximal erzeugt werden sollen. Wenn man das auf 3 setzt (Timecode, Sprecher, Text), bleibt Text mit Umbrüchen trotzdem erhalten, auch wenn man nach genau diesen Umbrüchen explodiert.

              Gruß,

              Amica
              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
              Super, danke!
              [/COLOR]

              Kommentar

              Lädt...
              X