Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Problem mit BBCode

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Problem mit BBCode

    Das ewige Thema: BBcode

    Also mein BBcode funktioniert eigentlich schon ganz gut, leider habe ich nun ein Problem:

    Ich lasse die
    Tags durch eine Tabelle ersetzten mit folgender Zeile:


    Code:
    $kommentar = preg_replace("|\[quote\](.*)\[/quote\]|Uism",
    	     "	
    <table border=\"0\" width=\"80%\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\"><tr><td><p class=\"links\">Zitat:</p></td></tr></table><table border=\"1\" width=\"80%\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\"><tr bgcolor=\"#FF6633\"><td valign=\"top\"><p class=\"links\">$1</p></td></tr></table>
    ",$kommentar);
    Leider tritt nun das Problem auf, wenn in einem Quote etwas zitiert wird... Also sprich:
    Code:
    blabala
    blubbblubb
    dann der text nicht mehr richtig angezeigt wird weil nur einer der quote tags ersetzt wird und nicht beide.

    Kann mir einer bitte sagen woran das liegt?
    Danke
    goosele

  • #2
    Zähl doch die [quote]'s, vergleich sie mit der Anzahl der [/quotes], wenn sie gleich sind, ersetz
    eben durch str_replace() mit deinem '<table...>'-Kruscht und
    's auch durch '..</table>'-Kruscht.

    Kommentar


    • #3
      Das ist aber eher unschön und ein wenig aufwendig, dass jetzt neu zu machen. Gibt es nicht eine Option, dass der ganze Text nach preg_replace nochmal durchgelaufen wird um weitere quote tags zu finden?

      Kommentar


      • #4
        Ist eigentlich weder unschön noch aufwendig und damit entfiele auch dein Problem. Kannst ja einfach dein preg_replace() solang rekursiv aufrufen, bis es nichts mehr ersetzt. Einen Flag, der den ersetzten Teil nochmal auf Zutreffen des RegExp durchsucht gibts meines Wissens nach nicht, schließe es aber nicht aus.

        Kommentar


        • #5
          So zum Beispiel könntest du es machen:
          PHP-Code:
          <?php
              
          //  $regex enthält deinen regulären Ausdruck
              
          while(preg_match($regex$var)) {
                  
          preg_replace($regex$replace$var1);
              }
          ?>
          Allerdings solltest du dann den Modifier U weglassen.

          Kommentar


          • #6
            Genau, sonst kriegste die Zuordnung

            [quot]..[quot]..[/quot]..[/quot]

            Kommentar


            • #7
              $kommentar = preg_replace("|\[quote\](.*)\[/quote\]|Uism",


              Die Funktionsweise der Modifer würde ich mir nochmal genau angucken ...
              Was hier steht, ist ohne zu denken reingetippt worden

              Kommentar

              Lädt...
              X