RegEx

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

  • RegEx

    Moin.
    Und zwar würde ich mir gerne eine eigene BB-Code Klasse schreiben (Ich weiß, davon gibts schon genug, aber ich würde es trotzdem gerne selber machen).

    Jetzt steh ich vor folgendem Problem (mit dem Regulären Ausdruck).
    Ich erkenne immer nur "einen" Tag.
    Bsp. bei
    [ url]Text[/url] ttt [ url]Tewerwerxt[/url]
    erkennt der nur den ersten und den letzen Tag.
    Hier der Ausdruck:
    PHP-Code:
    <?PHP
      $pattern 
    '/\[url\](.*)\[\/url\]/is';
    ?>
    Wie muss ich den Regulären Ausdruck ändern das es funktioniert?
    (Überprüfung mit preg_match_all())

    Und das nächste wäre noch wie ich die dann alle ersetzen kann, aber halt nur so das geschaut wird bo der geöffnete Tag wieder geschlossen wird
    *blubb*

  • #2
    Re: RegEx

    Original geschrieben von deathcakeman
    erkennt der nur den ersten und den letzen Tag.
    Stichwort: greediness, Gier


    Btw: Die BBcode-Klasse von Christian Seiler setzt nicht umsonst auf einen richtigen Parser - mit regulären Ausdrücken allein kann nämlich überhaupt nicht geprüft werden, ob bspw. komplexere Verschachtelungsregeln eingehalten werden.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      @Wahsaga

      aber er will es doch selber machen *g*.

      Mit dem Kopf durch die Wand - wenn das mal keine Kopfschmerzen gibt ...

      Kommentar


      • #4
        dieses Problem kannst du mit regulären ausdrücken sehrwohl umgehen, dass mit der Verschachtelung is dann natürlich evtl. schwieriger ...

        gruß
        Robert

        Kommentar


        • #5
          Original geschrieben von subabrain
          dieses Problem kannst du mit regulären ausdrücken sehrwohl umgehen, dass mit der Verschachtelung is dann natürlich evtl. schwieriger ...
          Da bin ich gespannt.

          Zeigst du mir (d)eine Klasse, die das selbe leistet, wie die genannte - nur mit regulären Ausdrücken?
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            so hier ein einfaches beispiel für dein Problem:

            PHP-Code:

            <?php

            $pattern 
            "/\\[url\\]([^\\[][^u][^r][^l][^\\]]*)\\[\\/url\\]/";
            $string "[ url]Text[/url] ttt [ url]Tewerwerxt[/url]";

            preg_match_all($pattern,$string,$ergebnis);

            print_r($ergebnis);

            ?>
            Zeigst du mir (d)eine Klasse, die das selbe leistet, wie die genannte - nur mit regulären Ausdrücken?
            hab ich nicht gesagt das ich so eine besitze ...

            gruß
            Robert

            EDIT:
            das "u" von "url" muss direkt an die geöffnete eckige klammer ... da das forum auch ohne die funktion "urls automatisch umwandeln" einen link draus macht
            Zuletzt geändert von subabrain; 09.06.2007, 16:47.

            Kommentar


            • #7
              und was ist mit dem hier?:
              PHP-Code:
              $pattern "/\[url\]([^\[][^u][^r][^l][^\]]*)\[\/url\]/";
              $string "[ url]Text[/url] ttt [ url]Tew[ url]Text22[/url]er[b ]wer[/ b]xt[/url]"

              Kommentar


              • #8
                ok so müsste es nun korrekt gehen:

                PHP-Code:
                $pattern "/\\[url\\]([^\\[]+[^u]+[^r]+[^l]+[^\\]]*)\\[\\/url\\]/"
                und der ausserdem frage ich mich was so etwas wie:

                Code:
                [ url] Tew [ url]Text[/url] text [/url]
                für einen Sinn machen soll?

                gruß
                Robert
                Zuletzt geändert von subabrain; 09.06.2007, 17:14.

                Kommentar


                • #9
                  ein Parser muß noch ganz andere Sachen wegstecken

                  Kommentar


                  • #10
                    Original geschrieben von Koala
                    ein Parser muß noch ganz andere Sachen wegstecken
                    wie meinst du das?
                    also [ /b] mit space ist für mich kein gültiger bb-code-tag. gut, man könnte jetzt noch vielleicht mit \s* den fehler abfangen. aber wie weit möchtest du gehen - umliegende tasten mit einbeziehen, also v, n, könnte b sein?

                    oder habe ich dich falsch verstanden, kann auch sein.

                    Kommentar

                    Lädt...
                    X