Sneap: Sting in Array zerlegen

Hallo Leute,
ich hab da folgendes Problem und zwar habe ich mehrere Tabellen und würd den Inhalt gerne in ein Array schreiben lassen leider weiß ich cniht ganz wie ich das anfangen soll. Das hier ist der Orginal String:

  
<Table class="file_block" border=0 cellpadding=2 cellspacing=0>  
  
<TR><TD rowspan=4 class="img"><img src="http://xyz/images/icons/default-dist.png"><br>288.9 Mb</TD>  
    <TD><b><a href="http://xyz/1xx9wikq109i">Datei 1</a></b></TD></TR>  
<TR><TD>Erstellungsdatum 0 Tage zuvor</TD></TR>  
<TR><TD></TD></TR>  
<TR><TD align=right valign=bottom id="am429"></TD>  
</TR>  
</Table>  
  
<Table class="file_block" border=0 cellpadding=2 cellspacing=0>  
<TR><TD rowspan=4 class="img"><img src="http://xyz/images/icons/default-dist.png"><br>1048.3 Mb</TD>  
    <TD><b><a href="http://xyz/6wgsy41mprwh">Datei 2</a></b></TD></TR>  
  
<TR><TD>Erstellungsdatum 1 Tage zuvor</TD></TR>  
<TR><TD></TD></TR>  
<TR><TD align=right valign=bottom id="am406"></TD>  
</TR>  
</Table>  

Also aus diesem String würe ich jetzt gerne ein Array mit der Dateigröße, eins Array mit dem Dateinamen und eins mit dem Downloadlink machen. Leider find ich dazu keinen guten Ansatz der zB. sagt schneide im gesamten String alles zwichen <TD><b> und </b></TD> aus.

Hoffe das jemand mein Problem versteht und mir Helfen kann.
Danke schon mal.

Mfg

  1. Hallo,

    ... da musst Du aber aufpassen, dass die Police dich nicht erwischt!

    SCNR,
    Holger

    1. Hallo,

      ... da musst Du aber aufpassen, dass die Police dich nicht erwischt!

      SCNR,
      Holger

      Wieso das? Das sind ganz legale Dateien die ich anbiete..
      Nur ein Lösungsansatz ist die Police auch nicht ^^

      1. Moinsen!

        ... da musst Du aber aufpassen, dass die Police dich nicht erwischt!

        Wieso das? Das sind ganz legale Dateien die ich anbiete..

        Ja. Aber Sting in Arrays zerlegen?! Boese, boese... ;)

        --
        "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
              - T. Pratchett
        1. Ja. Aber Sting in Arrays zerlegen?! Boese, boese... ;)

          Natürlich ist das Unsinn, wo doch Sting eindeutig ein (der) Key von The police ist?

          The Police lässt sich aber wunderbar als Array darstellen:

          $the_police = array(  
              'Sting'            => array(  
                  [0] => 'Vocals',  
                  [1] => 'Bass'  
              ),  
              'Stewart Copeland' => 'Drums',  
              'Andy Summers'     => 'Guitar',  
              'Henry Padovani'   => 'Guitar'  
          );
          

          Zur Sicherheit sollte man dann aber ein unset($the_police['Henry Padovani']); machen :p

          1. Und wie Hilft mir das alles jetzt bei meinen Problem?

            1. Und wie Hilft mir das alles jetzt bei meinen Problem?

              Dieser Ast der Diskussion hilft dir natürlich nicht - für die eigentliche Hilfe habe ich bereits einiges an anderer Stelle beigesteuert.

              1. Hoi!

                Dieser Ast der Diskussion hilft dir natürlich nicht - für die eigentliche Hilfe habe ich bereits einiges an anderer Stelle beigesteuert.

                Wobei ich sagen muss, dass der durchschnittliche Anfaenger die dort angesprochenen Punkte in umgekehrter Reihenfolge probieren wuerde. So wuerde ich es jedenfalls empfehlen. Erstmal Stringschnibbeleien. Das kann jeder irgendwie und wenn nicht, sollte man sie lernen.

                --
                "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
                      - T. Pratchett
  2. 4 Möglichkeiten die mir spontan einfallen:

    1. Ein XML-Parser - sofern dein Dokument wohlgeformt ist (z.B. SimpleXML)
    2. ein Tagsoup-Parser dem das egal ist (z.B. PHP Simple HTML DOM)
    3. reguläre Ausdrücke (preg_match_all)
    4. Stringfunktionen (vornehmlich strpos und substr)
      1. reguläre Ausdrücke (preg_match_all)

      Find ich ganz gut leider komme ich mit den Ausdrücken nicht ganz zurecht, um zu sagen filter alles heraus was zwischen dem und dem steht.

      So hab ich es mal versucht:

        
      preg_match_all("<TD rowspan=4 class=\"img\"><br>(.*)</TD>", $table, $arr_size, PREG_PATTERN_ORDER);  
      
      
      1. Ich hab' mir erlaubt, das Thema zu ändern - über Sting sind wir mittlerweile hinweg.

        1. reguläre Ausdrücke (preg_match_all)

        Find ich ganz gut leider komme ich mit den Ausdrücken nicht ganz zurecht, um zu sagen filter alles heraus was zwischen dem und dem steht.

        Hört sich nach Zawinski an.

        So hab ich es mal versucht:

        preg_match_all("<TD rowspan=4 class="img"><br>(.*)</TD>", $table, $arr_size, PREG_PATTERN_ORDER);

          
        Was sagt die Fehlermeldung?  
          
        Ich tippe stark darauf, dass dir die Begrenzer für den Ausdruck fehlen.  
          
        Zudem musst du musst du bestimmte Zeichen in deinem Ausdruck maskieren.  
          
        Weiters arbeitest du gierig, das ist sicher nicht in deinem Sinn.  
          
        Den Flag kannst du dir zudem sparen da er ohnehin default ist.
        
        1. Ich hab' mir erlaubt, das Thema zu ändern - über Sting sind wir mittlerweile hinweg.

          Jap ist ok.

          Hört sich nach Zawinski an.

          Ich hab eigendlich nur probleme die Ausdrücke richtig zu schreiben.

          Was sagt die Fehlermeldung?

          Ich teste das ganze mit einem RegExp-Evaluator und der sagt mir:
          Der verwendete Reguläre Ausdruck trifft auf den zu durchsuchenden Text nicht zu.

          Ich tippe stark darauf, dass dir die Begrenzer für den Ausdruck fehlen.

          Habs auch schon mit begrenzer probiert:

            
          preg_match_all('/^<TD rowspan\=4 class\=\"img\"><br>(.*)<\/TD>$/', $table, $arr_size);  
          
          

          Zudem musst du musst du bestimmte Zeichen in deinem Ausdruck maskieren.

          Ja kann sein ist das erste mal das ich mich mit Ausdrücken beschäftig, deswegen benutz ich ja den RegExp-Evalator.

          Weiters arbeitest du gierig, das ist sicher nicht in deinem Sinn.

          Also am ende =iUm Anhängen wenn ich das richtig gelesen habe.

          Den Flag kannst du dir zudem sparen da er ohnehin default ist.

          Ok

          1. Ich hab' mir erlaubt, das Thema zu ändern - über Sting sind wir mittlerweile hinweg.
            Jap ist ok.

            Hört sich nach Zawinski an.
            Ich hab eigendlich nur probleme die Ausdrücke richtig zu schreiben.

            Genau das sagt Zawinski doch: du entscheidest dich für reguläre Ausdrücke und hast jetzt mehr Probleme als vorher.

            Ich teste das ganze mit einem RegExp-Evaluator und der sagt mir:

            Die Software scheint nicht für PHP-Variante der PCRE geeignet zu sein.

            Der verwendete Reguläre Ausdruck trifft auf den zu durchsuchenden Text nicht zu.

            Unter PHP wirst du eine Fehlermeldung erhalten - teste dort.

            Ich tippe stark darauf, dass dir die Begrenzer für den Ausdruck fehlen.
            Habs auch schon mit begrenzer probiert:

            preg_match_all('/^<TD rowspan=4 class="img"><br>(.*)</TD>$/', $table, $arr_size);

              
            wo kommt jetzt plützlich ^ und $ her? so kann das erstrecht nicht funktionieren.  
              
            
            > > Zudem musst du musst du bestimmte Zeichen in deinem Ausdruck maskieren.  
              
            
            > Ja kann sein ist das erste mal das ich mich mit Ausdrücken beschäftig  
              
            Das ist keine Schande - nur hast du vergessen, das zu erwähnen - auch wenn ich es vermutete ;)  
              
            
            > deswegen benutz ich ja den RegExp-Evalator.  
              
            Guckst du hier: <http://www.regex-tester.de/regex.html>  
              
            Als tipp: versuche dich zuerst an einfacheren ausdrücken - versuche alle zwischen <td und </td> zu matchen und taste dich langsam an das Wunschergebnis ran.  
              
            Reguläre Ausdrücke sind sehr mächtig und umfangreich, aber nicht ohne weiteres beim ersten Versuch erlernbar.  
              
            
            > > Weiters arbeitest du gierig, das ist sicher nicht in deinem Sinn.  
            > Also am ende =iUm Anhängen wenn ich das richtig gelesen habe.  
              
            U würde schon reichen wenns nur um die Gierigkeit geht ;)
            
            1. Das ist keine Schande - nur hast du vergessen, das zu erwähnen - auch wenn ich es vermutete ;)

              Ja hab ich sorry ;)

              deswegen benutz ich ja den RegExp-Evalator.

              Guckst du hier: http://www.regex-tester.de/regex.html

              Als tipp: versuche dich zuerst an einfacheren ausdrücken - versuche alle zwischen <td und </td> zu matchen und taste dich langsam an das Wunschergebnis ran.

              Super damit bekomme ich das hin hab mich langsam rangetastet und kommt zu diesem Ergebniss bis jetzt:

                
              preg_match_all('/"img"><br>.*<\/TD>/U', $table, $arr_size);  
              
              

              Weiters arbeitest du gierig, das ist sicher nicht in deinem Sinn.
              Also am ende =iUm Anhängen wenn ich das richtig gelesen habe.

              U würde schon reichen wenns nur um die Gierigkeit geht ;)

              Hab ich gemacht wie oben zu sehen ;)

              1. Super damit bekomme ich das hin hab mich langsam rangetastet und kommt zu diesem Ergebniss bis jetzt:

                preg_match_all('/"img"><br>.*</TD>/U', $table, $arr_size);

                  
                Ohne es getestet zu haben sieht das ganze schon recht ok aus - dein Problem wird aber sein, dass du den Schnipsel zwischen <br> und </TD> haben (und speichern) willst. Dafür sind Klammern zuständig.