über preg_match zwischen komentaren in html auslesen

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

  • ü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!

    Kommentar


    • #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

      Kommentar


      • #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

        Kommentar


        • #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

          Kommentar


          • #6
            @derHund

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

            funktioniert tadellos

            lg
            lisa

            Kommentar


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

              Kommentar

              Lädt...
              X