regex ausdruck

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

  • regex ausdruck

    hallo habe ein problem mit einem regex ausdruck, der als pattern in einer preg_match abfrage verwendet werden soll. ich dabei nach folgendem suchen: alles, was innerhalb
    PHP Code:
    <table class="blabla"
    und
    PHP Code:
    </table
    steht soll dabei gefiltert werden. mehrfachübereinstimmungen sind ja kein problem. ich habe wirklich keine ahnung, wie ich das hinbekomme. kann mir jemand helfen?? danke

  • #2
    Hallo,

    mit regulären Ausdrücken geht das nur, wenn innerhalb der Tabelle keine verschachtelte Tabelle mehr enthalten ist. Besser wäre es, das per DOM zu machen, wenn du mich fragst.

    PHP Code:
    "!<table\\s+class=\"blabla\"\\s*>(.+?)</table\\s*>!s" 
    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]

    Comment


    • #3
      nein, keine verschachtelten tabellen mehr, nur ganz normale trs und tds.
      danke für die regex, ich schau mir das jetzt mal ganz genau an

      du würdest das mit dom machen? wie genau meinst du das?

      super, danke für die schnelle hilfe!!


      //EDIT:
      hab das gerade mal getestet, bekomme aber leider kein ergebnis
      (tut mir leid, kann sein, dass ich einen dummen fehler mache)

      PHP Code:
         $muster "!<table\\s+class=\"test\"\\s*>(.+?)</table\\s*>!s";
         
      preg_match($muster$string$treffer);

      //$string enthält validen html code
      //die zeichenkette <table class="test">....</table> ist 100% enthalten
      //leider ist $treffer leer 
      Last edited by svr; 31-03-2010, 12:16.

      Comment


      • #4
        Poste mal bitte den Inhalt von $string auszugsweise, so dass man es nachvollziehen kann.

        http://php.net/manual/de/book.dom.php
        Last edited by AmicaNoctis; 31-03-2010, 12:24.
        [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]

        Comment


        • #5
          wollte das nicht posten, da es eben sehr lange ist, aber entschuldige, du hast recht. ohne kann man das schlecht nachvollziehen.

          nopaste.info - free nopaste script and service
          (die class um die es geht ist in großbuchstaben geschrieben!)

          hier kann man es sich ansehen. hab das ganze überarbeitet, da zwischen den einzelnen elementen unendlich viel stand, weshalb es sehr unübersichtlich wäre

          ist leider trotzdem nicht sehr viel besser, entschuldige das

          danke!
          Last edited by svr; 31-03-2010, 12:33.

          Comment


          • #6
            TEST ist dort groß geschrieben. Häng mal einfach ein "i" ganz hinten an den Ausdruck dran: "...!si"
            [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]

            Comment


            • #7
              habe test nur der erkennbarkeit wegen gross geschrieben

              in wirklichkeit steht dort absatzKlein genau in dieser schreibung. und genau so habe ich es auch in das muster eingefügt.

              durch den i modifikator wird ja nur die unterscheidung zwischen groß und kleinschreibung deaktiviert.

              Comment


              • #8
                Steht es dort auch in "..." oder zufällig in '...'? Ich sehe nämlich bisher keinen Grund, warum das nicht funktionieren sollte. Bitte sorge für 100%ige Nachvollziehbarkeit, indem du den echten HTML-Code (auszugsweise) und das aktuelle Suchmuster zur Verfügung stellst. Dieser Testcode von mir funktioniert jedenfalls tadellos:

                PHP Code:
                <?php
                    $string 
                = <<<'EOD'
                <div>
                    <div>
                        ...
                        <div class="clear"></div>
                    </div>
                </div>
                <div class="mainCont">
                    <h2 class="first "> basis </h2>
                    <table class="absatzKlein">
                        <tr><td class="defType">last</td><td> <p>nummer</p> </td></tr>
                        <tr><td class="defType">since</td><td> nummer </td></tr>
                        <tr><td class="defType">ich</td> <td><p>mann</p></td> </tr>
                        <tr>
                            <td class="defType">blaa</td>
                            <td> <p><a href="url">zahl</a>/<a href="url">bla</a> </td>
                        </tr>
                        <tr> <td class="defType">ich</td> <td> <p> bla </p> </td> </tr>
                        <tr> <td class="defType">ich</td> <td> <p> - </p> </td> </tr>
                        <tr> <td class="defType">bla:</td> <td><p>bla</p></td> </tr>
                        <tr> <td class="defType">ich</td> <td><p>bla</p></td> </tr>
                    </table>
                    <div id="rectangle" style="display:none;">
                        <div class="rectangle" id="BANNER_rectangle"></div>
                    </div>
                    <div class="clear"></div>
                    <h2 class="mainHeader "> header</h2>
                    <table class="absatzKlein">
                        <tr>...</tr>
                    </table>
                </div>
                EOD;
                    
                $muster "!<table\\s+class=\"absatzKlein\"\\s*>(.+?)</table\\s*>!si";
                    
                preg_match($muster$string$treffer);
                    
                // preg_match_all($muster, $string, $treffer);
                    
                print_r($treffer);
                ?>
                Edit: wenn du als Muster
                PHP Code:
                "!<table\\s+class=([\"'])absatzKlein\\1\\s*>(.+?)</table\\s*>!s" 
                verwendest, ist es sogar egal, welches Anführungszeichen verwendet wird.
                Last edited by AmicaNoctis; 31-03-2010, 12:56.
                [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]

                Comment


                • #9
                  ich bauarbeiter. damit, die daten als html für mich sichtbar sind, habe ich string mit htmlentities behandelt. daran hat es wohl gelegen, jetzt geht alles.

                  entschuldige mich!

                  nochmals danke für die kompetente hilfe, werde das forum auf jeden fall weiter besuchen

                  Comment


                  • #10
                    Originally posted by svr View Post
                    werde das forum auf jeden fall weiter besuchen
                    Sehr gerne, ich muss an dieser Stelle mal lobend erwähnen, dass du im Gegensatz zu vielen anderen Neulingen hier die Forenregeln gelesen und verstanden zu haben scheinst.
                    [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]

                    Comment

                    Working...
                    X