[REGEX] preg_replace & nl2br

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

  • [REGEX] preg_replace & nl2br

    Also ich hab das Problem ich muss nl2br mehrfach in preg_replace benutzen.

    Geht das überhaupt?

    Wenn ja müsste das dann etwas so aufgebaut sein:

    PHP-Code:
    $ausgabe preg_replace("/(.*)<pre>(.*)<\/pre>(.*)/iU""".nl2br("\\1")."\\2".nl2br("\\3").""); 
    Ich weis das das falsch ist Weils nämlich nicht funktioniert ^^

    Könnte mir jemand zeigen wie es richtig sein müsste (wenns überhaupt möglich ist)?

  • #2
    guck mal preg_callback oder den modifier e(?) an

    Kommentar


    • #3
      den modifier e(?) an
      ja, e sollte es tun ... aber drauf achten, daß der ersatz im highlighting vollständig als string erscheint ... weißt? also praktisch einen string erstellen, der auch per eval ausgewertet werden könnte, ...
      Die Zeit hat ihre Kinder längst gefressen

      Kommentar


      • #4
        Danke erstmal für eure Antworten.

        Bei mir sieht es im Moment so aus:

        PHP-Code:
        $ausgabe preg_replace("/(.*)<pre>(.*)<\/pre>(.*)/iUe""".nl2br('\\1')."\\2".nl2br('\\3').""$ausgabe); 
        Aber das nl2br wird nicht übernommen.

        Kommentar


        • #5
          Aber das nl2br wird nicht übernommen.
          aber drauf achten, daß der ersatz im highlighting vollständig als string erscheint
          was sollen eigentlich sinnfreie konstrukte wie ""?

          probier mal
          PHP-Code:
          $ausgabe preg_replace("/(.*)<pre>(.*)<\/pre>(.*)/iUe""nl2br('\\1').'\\2'.nl2br('\\3')"$ausgabe); 
          eventuell die \\x jeweils als \x schreiben ... bei der \\2 bin ich mir atm auch nicht sicher, weils quotes dort hinmüssen ... in ermangelung eines beispiel textes hab ich auch keine lust zu testen ...
          Die Zeit hat ihre Kinder längst gefressen

          Kommentar


          • #6
            Geht leider auch nicht die Textteile sind zwar jedesmal vorhanden aber das nl2br wird nicht ausgeführt weder mit der \\x oder der \x version.

            Ich will mal kurz erläutern für was das gedacht ist.
            Damit trenne ich normalen Text, Zitate und anderen BBCode mit dem BBCode [ code][ /code].
            Da der ja im <pre></pre> dargestellt wird und durch ein zusätzliches <br /> auseinander gezogen wird.
            Desshalb soll alles was nicht [ code]xxx[ /code] mit nl2br behandelt werden.

            EDIT: Mir fällt da gerade was auf anscheinend ignoriert er die Zeile komplett.
            Wird doch nicht daran liegen?

            PHP-Code:
            $ausgabe preg_replace("/\[ code\]([^\"].*)\[ \/code\]/sU""<pre><div class=\"over\"><blockquote><table class=\"code\"><tr><td class=\"verlauf\">Code:</td></tr><td>\\1</td></tr></table></blockquote><br /></div></pre>"$ausgabe); 
            Dann später kommt erst die neue Zeile.
            Wenn ich dort in der neuen wie du oben gepostet hast die Nummern austausche oder doppelt angeben. Verändert sich der Text überhaupt nicht. Also gehe ich davon aus das der irgendwie keine änderungen vornimmt.

            Warum auch immer
            Zuletzt geändert von Stanley Tweedle; 20.10.2004, 17:59.

            Kommentar


            • #7
              So also das hier funktioniert schon mal:

              PHP-Code:
              $ausgabe preg_replace("/(.*)/iUe""nl2br('\\1')"$ausgabe); 
              Ich prüfe jetzt ob sich überhaupt code im string befindet wenn nicht wird das oben drüber ausgeführt.
              Ist code vorhanden dann soll das hier ausgeführt werden:

              PHP-Code:
              $ausgabe preg_replace("/(.*)<pre>(.*)<\/pre>(.*)/iUe""nl2br('\\1').'\\2'.nl2br('\\3')"$ausgabe); 
              Allerdings geht es immer noch nicht habe schon alles mögliche probiert.
              Vor den zahlen stehen \\ eins wird hier im Forum entfernt.

              Kommentar


              • #8
                Allerdings geht es immer noch nicht habe schon alles mögliche probiert.
                benutze mal deinen regexp mit preg_match(_all) und schau dir an, auf was gematched wird.

                bitte formuliere deine fehlerbeschreibung das nächste mal ausführlicher! danke.
                Die Zeit hat ihre Kinder längst gefressen

                Kommentar

                Lädt...
                X