suchen und finden mit preg_match

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

  • suchen und finden mit preg_match

    hi sky,
    habe in einem thread vom juli gelesen wie man mit preg_match den title-tag einer html-datei ausliest, meine frage ist folgende:
    ich möchte aus einer datei den inhalt zwischen zwei kommentaren grabben <!--textbox_start--> und <!--textbox_end-->. bei meinem script bekomme ich zwar eine fehlermeldung aber auch den inhalt zwischen den kommentaren. wie ist der richtige reguläre ausdruck für die kommentare und warum funktioniert es nicht bei vorkommenden newline und absatzzeichen?

    hier das script:
    ____________________________________________________________
    <?
    $fp = fopen ("test.htm","r");
    if ($fp)
    {
    while (!feof($fp))
    {
    $zeile= fgets($fp, 10000);
    $pattern = '!."<!--Texbox_start-->".(.*?)."<!--Textbox_end-->".!i';
    while (preg_match($pattern, $zeile, $txt))
    {
    echo "<b>Inhalt:</b>".$txt[3];
    }
    }
    fclose($fp);
    }
    ?>
    ____________________________________________________________

    wer kann mir helfen?

  • #2
    <?php
    $fp = fopen ("test.htm","r");
    if ($fp)
    {
    while (!feof($fp))
    {
    $zeile= fgets($fp, 10000);
    $pattern = "|(<!--Texbox_start-->)(.*?)(<!--Textbox_end-->)|is";
    while (preg_match($pattern, $zeile, $txt))
    {
    echo "<b>Inhalt:</b>".$txt[2];
    }
    }
    fclose($fp);
    }
    ?>


    [Editiert von Sky am 31-01-2002 um 16:01]

    CAT Music Files

    Kommentar


    • #3
      Re:

      Hi Sky,
      hmmm, interessanter ansatz aber jetzt gehts irgendwie gar nicht mehr? liegt an der falschen regex, wie ist denn nun die richtige?

      danke im vorraus!

      Kommentar


      • #4
        Hab deinen Tippfehler wohl mit übernommen... Textbox statt Texbox muss es heißen.
        Und noch zwei Leichtsinnsfehler... Hab es oben korrigiert.

        CAT Music Files

        Kommentar


        • #5
          danke für die prompte antwort, was den tippfehler betrifft so hatte ich den allerdings so auch in der test.htm, naja, aber jetzt hängt es immer noch, ein reload der seite dauert ewig und die schleife funzt noch nicht da das zu einer endlosausgabe führt?

          Kommentar


          • #6
            Natürlich führt das zu einer Endlosausgabe - du veränderst $zeile in der while-Schleife ja überhaupt nicht!

            CAT Music Files

            Kommentar


            • #7
              Die Lösung

              Für alle die das selbe Problem haben hier nochmal die ganze Lösung mit frei definierbaren Suchvariablen:

              ____________________________________________________________

              <?php
              $file = "test.htm";
              $suche_a = "<!--Textbox_start-->";
              $suche_b = "<!--Textbox_end-->";
              $fp = fopen ("$file","r");
              if ($fp)
              {
              while (!feof($fp))
              {
              $zeile= fgets($fp, 10000);
              $pattern = "|($suche_a)(.*?)($suche_b)|is";
              while (preg_match($pattern, $zeile, $txt))
              {
              $zeile=$txt[2];
              echo "<b>Inhalt:</b>".$txt[2];
              }
              }
              fclose($fp);
              }
              ?>

              ____________________________________________________________

              Danke an SKY für die Hilfe!!!

              Kommentar


              • #8
                Die Variablenzuweisung für Pattern solltest du aus der Schleife rausnehmen, da wird eh bei jedem Durchlauf der gleiche Wert zugewiesen:

                <?php
                $file = "test.htm";
                $suche_a = "<!--Textbox_start-->";
                $suche_b = "<!--Textbox_end-->";
                $pattern = "|($suche_a)(.*?)($suche_b)|is";
                $fp = fopen ("$file","r");
                if ($fp)
                {
                while (!feof($fp))
                {
                $zeile = fgets($fp, 10000);
                while (preg_match($pattern, $zeile, $txt))
                {
                $zeile=$txt[2];
                echo "<b>Inhalt:</b>".$txt[2];
                }
                }
                fclose($fp);
                }
                ?>

                CAT Music Files

                Kommentar


                • #9
                  hi sky,
                  eine letzte frage noch:
                  das script stolpert immer über vorkommende cr' und lf's beim entfernen derselben habe ich sie zwar in $zeile nicht mehr aber preg_match scheint sich immer noch daran aufzuhängen. was kann ich tun?

                  Kommentar


                  • #10
                    das script stolpert immer über vorkommende cr' und lf's
                    Wo zum Beispiel?

                    beim entfernen derselben
                    Wie machst du das?

                    habe ich sie zwar in $zeile nicht mehr
                    Sicher?

                    was kann ich tun?
                    Sage ich dir, wenn du mir obige Auskünfte gibst

                    CAT Music Files

                    Kommentar


                    • #11
                      http://www.php-resource.de/forum/sho...threadid=38040

                      lg
                      lisa

                      Kommentar

                      Lädt...
                      X