über preg_match zwischen komentaren in html auslesen

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

  • über preg_match zwischen komentaren in html auslesen

    hallo zusammen, ich nu wieder

    ich nehme mal bezug auf:
    http://www.php-resource.de/forum/sho...?threadid=4575

    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///walter005

    die lösung war, unter anderen, von sky:
    <?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);
    }
    ?>


    die ich sehr gerne übernommen habe *lach*

    frage:
    tatsächlich dürfen zwichen <!--textbox_start--> und <!--textbox_end--> im html-code keine absätze oder newlines sein.

    gibt es irgend eine gar schlaue möglichkeit dieses zu umgehen... ich mag nämlich newlines

    lg
    lisa

  • #2
    Sky hat auch ein Tutorial zum Thema preg geschrieben:
    http://www.php-resource.de/tutorials/read/10/1/

    Lies dir das mal komplett duch, und guck besonders bei den Modifiern.
    hopka.net!

    Comment


    • #3
      da steht sogar im prinzip schon die lösung!

      PHP Code:
      preg_match("!<\!--textbox_start-->(.*?)<\!--textbox_end-->!im",$dein_string,$dummy); 
      *ungetestet*
      in $dummy[1] steht dann dein teil den du haben willst

      evtl mit preg_match_all() arbeiten
      mfg

      Comment


      • #4
        *seuftz*

        hallo zusammen... leider hat das alles dann doch nicht funktioniert.

        @Hopka: alles durchgelesen und ausprobiert, ging leider nicht
        @Trashar: auf preg_match_all umgestrickt, ging leider auch nicht

        im moment sieht mein code so aus:

        PHP Code:
        <?PHP
        $file 
        "_content.html";
        $pattern "|($start)(.*?)($ende)|is"
        $fp fopen ("$file","r"); 
        if (
        $fp

        while (!
        feof($fp)) 

        $zeile fgets($fp1000000); 
        while (
        preg_match($pattern$zeile$txt)) 

        $zeile=$txt[2];
        echo 
        $txt[2];


        fclose($fp); 

        ?>
        wobei die variablen start und ende über die url mitgeteilt werden:
        xy.php?start=holladri-->&&ende=<!--holladriende

        steht in der _content.html alles in einer zeile, funktioniert es auch... kaum habe ich im code ein linebreak, also quasi das hier "
        "der sich auf das html nicht auswirkt, scheitert das preg_match.

        $latein = "|am(.*)ende)|";

        lg
        lisa

        Comment


        • #5
          steht in der _content.html alles in einer zeile, funktioniert es auch... kaum habe ich im code ein linebreak ... scheitert das preg_match.
          wodran das wohl liegen mag
          PHP Code:
          $zeile fgets($fp1000000); 
          while (
          preg_match($pattern$zeile$txt)) 

          ...

          fgets gibt meines wissens und deiner betitelung nach nur eine zeile zurück .. wie der regexp dann bei mehrzeiligkeit matchen soll,

          alles einlesen, dann ersetzen.
          Die Zeit hat ihre Kinder längst gefressen

          Comment


          • #6
            @derHund

            d.h. ich muss einfach mit
            PHP Code:
            $zeile fread($fp,1000000); 
            arbeiten?!

            funktioniert tadellos

            lg
            lisa

            Comment


            • #7
              oder $file = implode("\n",file('datei.txt'));
              dann hast die ganze file in nem string
              mfg

              Comment

              Working...
              X