[REGEX] tags vom anfang und ende eines strings suchen

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

  • [REGEX] tags vom anfang und ende eines strings suchen

    Hallo,

    ich versuche schon seit stunden eine lösung zu finden um von einem string z.b.

    PHP-Code:
    hjgjghj<burnincms:tpl name="name1">hgnghnghngh<burnincms:tpl name="name2">loop1</burnincms:tpl>ghnghfngh</burnincms:tpl>jzghjh 
    jeweils den ersten tag und den dazu passenden letzten tag zu finden und alles was sich dazwischen befindet zurückzugeben.

    meine versuche bisher:
    PHP-Code:
    (<burnincms:tpl name="([a-z0-9A-Z]+)">)(.*?)(<\/burnincms:tpl>) 
    geben mir immer nur den ersten opentag und den ersten closetag wieder...

    ist mein vorhaben überhaut möglich, einmal von vorn und dann von hinten einen string zu durchsuchen?

    mfg
    daniel

  • #2
    Guck dir mal das Fragezeichen in verbindung mit den Quantifiern in diesem Tut an.

    Und brich deinen Code um!

    Kommentar


    • #3
      Ich glaube das geht nicht, da du auch keinen negativen lookahaed benutzen kannst, da bei denen die charlength bestimmt sein muss...

      Ist das für eine Templateclasse? Dann überleg dir ein leicht anderes system, evtl. so:

      <burnincms:tpl name="name1">...</burnincms:tpl name="name1">

      Edit:
      @ Tobiaz, auch mit Gierigkeit wird das erste "</burnincms:tpl>" erkannt!

      Kommentar


      • #4
        vielen dank euch beiden für die super schnellen antworten

        wenn ich es so:
        PHP-Code:
        (<burnincms:tpl name="([a-z0-9A-Z]+)">)(.*?)(<\/burnincms:tpl>)?$ 
        versuche gibt er mir auch alles nach dem letzten closetag zurück...

        @Milian: ja ich versuche mich gerade an einer template klasse

        vielen dank
        daniel

        Kommentar


        • #5
          @ Milian: Hast natürlich recht.

          Wenn du ordentliche Verschachtelungen benutzen willst, dann gib am besten dem Close-Tag auch nen Namen. (Ist auch nachher übersichtlicher.

          Kommentar


          • #6
            sach ich doch

            Kommentar


            • #7
              gut also wenn ich den namen im endtag mit angebe geht es soweit. nun habe ich noch ein problem mit den backreferences. wie kann ich mir den inhalt des umschließenden tags ausgeben lassen.

              in dem array was entsteht sind immer die tags mit dabei...

              vielen dank
              daniel

              Kommentar


              • #8
                (<burnincms:tpl name="([a-z0-9A-Z]+)"> )(.*?)(</burnincms:tpl name="\2">)
                So dürfte es ja bei dir sein, dann kannst du z.b. mittels preg_replace an den (.*?) kommen:
                PHP-Code:
                $foo preg_replace("/(<burnincms:tpl name=\"([a-z0-9A-Z]+)\"> )(.*?)(</burnincms:tpl name=\"\2\">)/is","$3",$bar); 
                Edit: Hatte vergessen die " zu escapen.
                Zuletzt geändert von Milian; 28.03.2005, 19:09.

                Kommentar


                • #9
                  1000 dank für dein hilfe

                  gruß
                  daniel

                  Kommentar


                  • #10
                    http://www.php-resource.de/forum/sho...threadid=45908
                    Die Zeit hat ihre Kinder längst gefressen

                    Kommentar


                    • #11
                      äußerst interessant! hast du mal nen link zu dem "?R" ? Auf meiner standart Seite rum um Regex (http://www.regenechsen.de/) finde ich nichts dazu.

                      Kommentar


                      • #12
                        hab das jetzt so versucht:
                        #<burnincms:tpl name="([a-z0-9A-Z]+)">((([^\[]*)|(?R))*)\[/quote\]<\/burnincms:tpl name="\1">#isUe
                        das programm regex coach meint dazu: "character 'R' may not follow '(?'" hmm...

                        Kommentar


                        • #13
                          äußerst interessant! hast du mal nen link zu dem "?R" ?
                          http://de.php.net/manual/de/referenc...ence.recursive
                          Auf meiner standart Seite
                          http://www.k-faktor.com/standart/
                          das programm regex coach meint dazu: "character 'R' may not follow '(?'" hmm...
                          regexp coach kann afaik kein pcre, oder wozu das ?R auch immer gehören mag.
                          Die Zeit hat ihre Kinder längst gefressen

                          Kommentar

                          Lädt...
                          X