BB Code Parser Problem (preg_replace)

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

  • BB Code Parser Problem (preg_replace)

    Ich bau zurzeit grad so eine Art MinCMS auf PHP4 Basis. Habe jetzt einen BBCode Parser von cywhale.de und will das hier implementieren:

    [color=red]Rot[/color]
    umgewandelt zu: <font style="color:red;">Rot</font>

    Mein Code:
    PHP-Code:
    $s=preg_replace("=(^|\ |\n)\[color\=([a-zA-Z0-9]{1,})\]([a-zA-Z0-9]{1,})\[/color\]=i""\\1<font style=\"color:\\2\;\">\\3</font>"$s); 
    Leider funktioniert der Code nicht, es kommen nur zwei kryptische Zeichen bei raus... Wo liegt mein Fehler?

    Schonmal besten dank!

  • #2
    Re: BB Code Parser Problem (preg_replace)

    ?,

    die gleichen codes werden im forum verwendet

    PHP-Code:
     [color=red]Rot[/color
    umgewandelt zu
    <
    font style="color:red;">Rot</font
    Mein Code:
    Code:
    preg_replace ("\[color=([^\]]+)\]([^\[]+)\[\/color\]", "<font style=\"color:\\1;\">\\2</font>", $im_string_halt)
    paßt auf jeden fall, powered by the regex coach 0.6

    mußt mal schauen, obs mit den backslahs bei \" bzw \\1 \\2 paßt, kommt imho drauf an, wie dus einsetzt, aber matchen und replacen tuts ...

    edit: wenn \ verschwinden, mußt du mich zitieren ...
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      Re: Re: BB Code Parser Problem (preg_replace)

      Original geschrieben von derHund
      [B]?,

      die gleichen codes werden im forum verwendet
      *gegendenkopfschlag*


      Mein Code:
      Code:
      preg_replace ("\[color=([^\]]+)\]([^\[]+)\[\/color\]", "<font style=\"color:\\1;\">\\2</font>", $im_string_halt)
      Jetzt gibts folgende Fehlermeldung:

      Warning: Delimiter must not be alphanumeric or backslash in D:\Webseiten\css\eoto_01\inc\bbcode.php on line 6

      Irgendwie blick ich da nicht durch.

      Danke für die Hilfe.

      Kommentar


      • #4
        Re: Re: Re: BB Code Parser Problem (preg_replace)

        Original geschrieben von MisterTiee
        Warning: Delimiter must not be alphanumeric or backslash in D:\Webseiten\css\eoto_01\inc\bbcode.php on line 6
        wenn du dich ein wenig mit regex beschäftigt hast, weisst du, was der delimiter ist (das zeichen, dass du zum kennzeichnen des anfangs und des endes des suchmusters benutzt).
        und das darf laut meldung nun mal nicht alphanummerisch oder ein backslash sein.

        na, und was hast du als erstes zeichen verwendet? genau ...
        (btw: abschliessenden delimiter hast du gar keinen, den musst du noch ergänzen.)

        üblich ist es hier, zum beispiel / oder ! zu nehmen.

        EDIT:
        bei genauerer betrachtung vermute ich eher, dass der erste \ gar kein delimiter sein sollte, sondern zum maskieren der klammer [ gedacht war.
        OK, dann musst du halt das muster vorne _und_ hinten noch um einen delimiter ergänzen.

        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Vielen Dank @ wahsaga und Der Hund, habe das Problem jetzt in den Griff bekommen.

          Zum einen lag es wirklich an den Delimitern (sorry, habe mich nicht in regex eingearbeitet, weil ich nur diese eine funktion brauch) und zum zweiten musste ich bei
          Code:
          <font style=\"color: \\1\;">
          noch ein Leerzeichen nach dem ":" einfügen.

          Hier nochmal die gesamte Zeile, falls jemand später auch mal das Problem hat:
          PHP-Code:
          $s=preg_replace("!\[color=([^\]]+)\]([^\[]+)\[\/color\]!""<font style=\"color: \\1;\">\\2</font>"$s); 

          Kommentar


          • #6
            sorry,

            hab die delimiter vergessen, .... hatte ursprünglich auch nur den regexp gepostet ...
            aber sonst paßts halt ... hätte man halt drauf kommen können ...
            Die Zeit hat ihre Kinder längst gefressen

            Kommentar

            Lädt...
            X