preg_match "ignoriert" HTML-Tag!?

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

  • preg_match "ignoriert" HTML-Tag!?

    Hi Group!

    Ich möchte folgenden string aus einer HTML-Vorlage extrahieren:

    <----snip----

    <!--start{OPTION_GROUP}-->
    <option value="##group_id##">##group##</option>
    <!--end{OPTION_GROUP}-->

    ----snap---->

    und zwar mit der 'preg_match'-Funktion:

    PHP-Code:
    preg_match("=<!--start{OPTION_GROUP}-->(.*)<!--end{OPTION_GROUP}-->=siU"$template$result); 
    ... und hier das Ergebnis:

    PHP-Code:
    echo htmlentities($result[0]);
    // output: <!--start{OPTION_GROUP}-->##group##<!--end{OPTION_GROUP}-->

    echo htmlentities($result[1]);
    // output: ##group## 
    preg_match scheint die <option>-Tags zu ignorieren!? Oder ist das einfach nur ein Fehler im REGEX?
    Ich bin für jede Hilfe Dankbar,

    thx, Stephan
    --
    ______________________________
    Stephan Rastrat
    mailto:stephan.groups@email.de
    ------------------------------

  • #2
    hast du im quelltext geguckt

    Kommentar


    • #3
      < müssen meines erachtens escaped werdne.
      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


      Kommentar


      • #4
        @TobiaZ:

        ?? Es handelt sich um den obenstehenden Quelltext(-ausschnitt)...

        @Abraxax
        An welcher Stelle meinst Du? Im HTML-Quelltext wohl weniger. Und das preg_match funktioniert ja, nur "schluckt" es den <option>-tag...

        --
        ______________________________
        Stephan Rastrat
        mailto:stephan.groups@email.de
        ------------------------------

        Kommentar


        • #5
          haste das ganze mal online?

          Kommentar


          • #6
            @TobiaZ:

            ... ach so, im Ergebnis-Quelltext
            klar, aber deshalb ja auch das 'echo htmlentities (...)' ;-)

            Kommentar


            • #7
              Jupp, hab ich jetzt auch gesehen. Wenns auch was umstänlich ist...

              Aber bei mir funktionierts:

              PHP-Code:
              <?PHP

              $template 
              '<----snip----

              <!--start{OPTION_GROUP}-->
              <option value="##group_id##">##group##</option>
              <!--end{OPTION_GROUP}-->

              ----snap---->'
              ;

              preg_match("=<!--start{OPTION_GROUP}-->(.*)<!--end{OPTION_GROUP}-->=siU"$template$result);

              echo 
              htmlentities($result[0]);

              echo 
              '
              ------------
              '
              ;

              echo 
              htmlentities($result[1]);

              ?>
              Ausgabe:
              <!--start{OPTION_GROUP}--> <option value="##group_id##">##group##</option> <!--end{OPTION_GROUP}--> ------------ <option value="##group_id##">##group##</option>

              Kommentar


              • #8
                O.k., jetzt funktioniert es auch bei mir, das herrliche ist: Ich hab nicht den geringsten Schimmer warum auf einmal... das preg_match steht bei mir eigentlich innerhalb einer Klassen-Methode, die dann direkt das result-array zurückgibt, was dann nicht funzt. Gebe ich einen string zurück ist alles in Ordnung.
                also:
                PHP-Code:
                function extract_from_tpl($template$reg)
                {
                    
                preg_match("=<!--start{".$reg."}-->(.*)<!--end{".$reg."}-->=siU"$template$result);
                    return 
                $result[1];
                }

                $template '<!--start{OPTION_GROUP}-->
                <option value="##group_id##">##group##</option>
                <!--end{OPTION_GROUP}-->'
                ;

                $string extract_from_tpl ($template"OPTION_GROUP");
                echo 
                $string
                funktioniert, Folgenedes aber nicht:
                PHP-Code:
                function extract_from_tpl($template$reg)
                {
                    
                preg_match("=<!--start{".$reg."}-->(.*)<!--end{".$reg."}-->=siU"$template$result);
                    return 
                $result;
                }

                $template '<!--start{OPTION_GROUP}-->
                <option value="##group_id##">##group##</option>
                <!--end{OPTION_GROUP}-->'
                ;

                $array extract_from_tpl ($template"OPTION_GROUP");
                echo 
                $array[1]; 
                naja, wenigstens läuft es jetzt irgendwie.

                Vielen Dank für die Hilfe,
                Stephan

                Kommentar


                • #9
                  ... und doch den Grund gefunden:

                  War eine unterschiedliche Behandlung IE6 zu Firefox 0.8:
                  MozFirefox entfernt im Quelltext wohl Formularelemente ausserhalb vom <form>-Tag, im IE kommt das gewünschte Ergebnis

                  thx, Stephan

                  Kommentar


                  • #10
                    der soll die entfernen? Sicher nicht. Der zeigt die höchstens nicht an. Und das ist nicht mehr als vernünftig...

                    Kommentar

                    Lädt...
                    X