dedlfix: Werte aus Textdatei exhumieren

Beitrag lesen

problematische Seite

Tach!

hat sich in den letzten Jahren soviel verändert, dass der Gebrauch von Regex in so einem Fall schon einer Todsünde gleich kommt? Offensichtlich. Ich kann mich noch gut an die Zeit erinnern, als PHP noch keine brauchbaren XML-Parser mitbrachte und überall im Netz allerlei Scripte auf rege Nachfrage stießen, die das Problem ebenso mit Stringfunktionen und/oder Regex angingen.

Auch damals war das kein passendes Werkzeug sondern ein Notbehelf. Aber auch in Zeiten von PHP4 gab es XML-Werkzeuge, nur nicht so ein einfaches wie SimpleXML (erst ab PHP 5). Zeiten ändern sich, und Nostalgie ist nicht unbedingt ein guter Ratgeber für die Gegenwart.

War ja auch eigentlich kein großes Ding, denn letztendlich bleibts ja doch nur ne simple Textdatei mit einer Struktur die es zu erkennen gilt.

Ja. Nein. Eine Textdatei ist nur dann simpel, wenn sie ziemlich starren Regeln folgt. XML, das noch dazu aus verschiedenen Quellen kommen kann, hat diese starre Struktur nicht, sondern hat die Flexibilität, die die Syntaxregeln von XML erlauben. "Tracking-Dateien zum Runterladen" hieß es im OP. Da ist also nicht zwangsläufig garantiert, dass die alle exakt gleich aufgebaut sind - aus Sicht einer Text-Datei. Jedoch aus der Sicht von XML. Einen Regexp zu nehmen, ist nicht flexibel, sondern einschränkend. Oder zu komplex, wenn er mehrere Regeln verarbeiten können soll.

Es ist keine Todsünde, das hat niemand behauptet. (Ich mag es nicht, wenn solche Dramtik in die Diskussion gebracht wird und sie damit unnötig zugespitzt wird.) Es ist nur mit deutlichen Nachteilen verbunden, die man auf den ersten Blick nicht so einfach erkennt. "Ist ja nur Text, was kann da schon schiefgehen?"

Daher tue ich mich verständlicherweise schwer das Ganze als so problematisch anzusehen, wenn das was vorher gut war auf einmal extrem schlecht sein soll.

Da muss man schon ganz schön die Augen schließen, um die Argumente nicht wahrzunehmen, dass XML kein simples Textformat ist, sondern in vielen Variationen daherkommen kann, die man alle in der RegExp-Regel berücksichtigen müsste.

Was wäre das dann für ein Tool, wenn zb. die vorliegende Datei jetzt nur eine simple Textdatei wäre oder ein Sammelsurium aus zusammenkopierten Inhalten in einer inkonformen HtmlDatei?

Da "simple Textdatei" keine eindeutige Definition ist, kann man die Frage nicht (eindeutig) beantworten. Da gibt es zu viele Unbekannte und Wenns und Abers, die alle die Richtung beeinflussen, in der man die Lösung für das Problem suchen sollte. CSV beispielsweise ist ein "simples Textformat", für das die Empfehlung aber auch nicht RegExp, sondern CSV-Reader heißt. Die Simplizität fängt nämlich dann an aufzuhören, wenn Ausnahmen auftreten wie Zeilenumbrüche und Begrenzungszeichen in den Daten oder Escape-Sequenzen.

Ein "Sammelsurium aus zusammenkopierten Inhalten" stelle ich mir auch alles andere als simpel vor. Für "inkonforme HtmlDateien" hingegen gibt es jedenfalls Parser, die das zu lesen versuchen, zum Beispiel DOMDocument::loadHTML. Es hängt weiterhin vom Anwendungsfall ab, und vor allem, ob die Struktur garantiert feststehend ist oder doch flexibel, aber einer Syntax folgend.

Generell kann ich nur soweit antworten: Wenn es für das Format einen Parser gibt, nutze ihn. Für alles andere muss man individuell entscheiden.

dedlfix.

0 145

Werte aus Textdatei exhumieren

Linuchs
  • php
  • programmiertechnik
  1. 1
    Rolf B
    1. 0
      Gunnar Bittersmann
      1. 0
        dedlfix
      2. 0
        pl
        1. 0
          Gunnar Bittersmann
          1. 0
            pl
            1. 0
              Gunnar Bittersmann
              1. 0
                pl
                1. 2
                  ThomasM
                  1. 0
                    pl
                    1. 0
                      ThomasM
  2. -2
    Henry
    • php
    • programmiertechnik
    • regex
    1. 2
      dedlfix
      1. 0
        Henry
        • meinung
        • php
        • regex
        1. 0
          dedlfix
          1. 0
            Henry
        2. 2
          Gunnar Bittersmann
          1. 0
            Henry
            1. 0
              Gunnar Bittersmann
            2. 5
              dedlfix
              1. 0
                Gunnar Bittersmann
              2. 0
                Henry
                1. 1
                  dedlfix
                  1. 0
                    Henry
                    1. 1
                      Gunnar Bittersmann
                      1. 0
                        Henry
                        1. 0
                          Gunnar Bittersmann
                          1. 0
                            Henry
                            1. 4
                              Christian Kruse
                              1. 2
                                Mitleser
                              2. 0
                                Henry
                                1. 1
                                  Christian Kruse
                                  1. 0
                                    Henry
                                    1. 0
                                      Robert B.
                                    2. 0
                                      pl
                                    3. 0
                                      Auge
                                  2. 0

                                    HTML parsen

                                    Henry
                                    • html
                                    • php
                                    • regex
                                    1. 0
                                      dedlfix
                                      1. 0
                                        Henry
                                        1. 0
                                          dedlfix
                                          1. 0
                                            Henry
                                            1. 0
                                              Henry
                                              1. 0
                                                Henry
                                                1. 0
                                                  dedlfix
                                                  1. 0
                                                    Henry
                                                    1. 0
                                                      Auge
                                                    2. 0
                                                      dedlfix
                                                      1. 0
                                                        Rolf B
                                                      2. 0
                                                        Henry
                                                        1. 0
                                                          dedlfix
                                                          1. 0
                                                            Henry
                                                            1. 0
                                                              dedlfix
                                                              1. 0
                                                                JürgenB
                                2. 0
                                  pl
                                3. 1
                                  dedlfix
                            2. 0
                              Gunnar Bittersmann
                              • browser
                              • zu diesem forum
                              1. 0
                                Christian Kruse
                            3. 0
                              Gunnar Bittersmann
                              1. 1
                                JürgenB
                              2. 0
                                Gunnar Bittersmann
                                1. 1
                                  JürgenB
                                2. 0
                                  Henry
                                  1. 0
                                    Robert B.
                                  2. 1
                                    Gunnar Bittersmann
                        2. 0
                          Robert B.
                2. 1
                  Gleiter
                  1. 0
                    Henry
                    1. 0
                      Gleiter
                  2. 0
                    JürgenB
                    1. 0
                      dedlfix
                      1. 0
                        JürgenB
                        1. 0
                          pl
                          1. 0
                            JürgenB
                            1. 0
                              Mitleser
                              1. 0
                                JürgenB
                                1. 0
                                  Mitleser
                                  1. 0
                                    pl
                                    1. 0
                                      JürgenB
                                      1. 0
                                        Auge
                                        1. 0
                                          dedlfix
                                          1. 0
                                            Auge
                                            1. 0
                                              JürgenB
                                              1. 0
                                                dedlfix
                                                1. 2
                                                  Rolf B
                                                  • humor
                                                  • meinung
                                                  1. 0
                                                    pl
                                                    1. 1
                                                      Tabellenkalk
                                                      1. 0
                                                        pl
                                                      2. 0
                                                        Rolf B
                                                        • mathematik
                                                        • meinung
                                                      3. 0

                                                        lon/lat precision

                                                        pl
                                                        1. 0
                                                          JürgenB
                                                          1. 0
                                                            Auge
                                                            1. 0
                                                              JürgenB
                                                              1. 0
                                                                pl
                                                            2. 0
                                                              Matthias Apsel
                                                              1. 0
                                                                MudGuard
                                                          2. 0
                                                            pl
                                                            1. 0
                                                              JürgenB
                                                              1. 0
                                                                Tabellenkalk
                                                                1. 0
                                                                  JürgenB
                                                          3. 0
                                                            Gunnar Bittersmann
                                                            1. 0
                                                              JürgenB
                                                              1. 0
                                                                Robert B.
                                                                1. 0
                                                                  Tabellenkalk
                                                                  1. 0
                                                                    Gunnar Bittersmann
                                                                    1. 0
                                                                      Tabellenkalk
                                                                      1. 0
                                                                        Robert B.
                                                                        • humor
                                                                        • mac
                                                                        • meinung
                                                                    2. 0
                                                                      Regina Schaukrug
                                                                      1. 0
                                                                        Mitleser
                                                                2. 0
                                                                  JürgenB
                                                                  1. 0
                                                                    Robert B.
                                                                    1. 0
                                                                      JürgenB
                                                                3. 1
                                                                  Matthias Apsel
                                                                  1. 0
                                                                    Robert B.
                                                                    • humor
                                                                    • meinung
                                                                    • selfhtml-wiki
                                                                    1. 0
                                                                      Gunnar Bittersmann
                                                                      1. 0
                                                                        Matthias Apsel
                                                                        1. 0
                                                                          Gunnar Bittersmann
                                                                          1. 0
                                                                            Matthias Apsel
                                                                            1. 0
                                                                              Gunnar Bittersmann
                                                                          2. 0
                                                                            Rolf B
                                                                            1. 0
                                                                              Gunnar Bittersmann
                                                              2. 0
                                                                pl
                                                            2. 0
                                                              Matthias Apsel
                                                              • humor
                                                    2. 0
                                                      Rolf B
                                                      1. 0
                                                        pl
                                      2. 0
                                        pl
                                2. 0
                                  pl
                                3. 0
                                  dedlfix
                            2. 0
                              pl
                    2. 0
                      Gunnar Bittersmann
                    3. 0
                      Gleiter
                      1. 0
                        JürgenB
        3. 2
          Christian Kruse
        4. 0
          Robert B.
          1. 0
            Henry
    2. 0
      Robert B.
    3. 0
      t-rex rox
      1. 1
        Gunnar Bittersmann
  3. 2
    ThomasM
    1. 0
      Rolf B
      1. 0
        Gunnar Bittersmann
  4. 0
    JürgenB
    1. 0
      pl
      1. 0
        JürgenB
        1. 0
          pl