[PHP] Problem mit BBCode Praser

Dieses Thema im Forum "Webentwicklung" wurde erstellt von X-man, 12. Mai 2007 .

Schlagworte:
  1. 12. Mai 2007
    Problem mit BBCode Praser

    Servus Leute,
    also ich hab mal wieder ne frage an euch und zwar programmier ich gerade ein Gästebuch klappt auch alles ganz gut.

    Blos mit dem BBCode gibts noch Probleme:
    Code:
     $daten = eregi_replace("\[Font=Arial\]([^\[]+)\[/Font]", "<font face='Arial'>\\1</font>", $daten);
     $daten = eregi_replace("\[Font=ArialBlack\]([^\[]+)\[/Font]", "<font face='Arial Black'>\\1</font>", $daten);
     $daten = eregi_replace("\[Font=Sans-Serif\]([^\[]+)\[/Font]", "<font face='Sans-Serif'>\\1</font>", $daten);
     $daten = eregi_replace("\[Font=TimesNewRoman\]([^\[]+)\[/Font]", "<font face='Times New Roman'>\\1</font>", $daten);
     $daten = eregi_replace("\[Font=Verdana\]([^\[]+)\[/Font]", "<font face='Verdana'>\\1</font>", $daten);
    
     $daten = eregi_replace("\[color=black\]([^\[]+)\[/color\]", "\\1", $daten);
     $daten = eregi_replace("\[color=maroon\]([^\[]+)\[/color\]", "<font color='#800000'>\\1</font>", $daten); 
     $daten = eregi_replace("\[color=green\]([^\[]+)\[/color\]", "<font color='#008000'>\\1</font>", $daten);
     $daten = eregi_replace("\[color=olive\]([^\[]+)\[/color\]", "<font color='#808000'>\\1</font>", $daten);
     $daten = eregi_replace("\[color=navy\]([^\[]+)\[/color\]", "<font color='#000080'>\\1</font>", $daten);
     $daten = eregi_replace("\[color=purple\]([^\[]+)\[/color\]", "<font color='#800080'>\\1</font>", $daten);
     $daten = eregi_replace("\[color=teal\]([^\[]+)\[/color\]", "<font color='#008080'>\\1</font>", $daten);
     $daten = eregi_replace("\[color=gray\]([^\[]+)\[/color\]", "<font color='#808080'>\\1</font>", $daten);
     $daten = eregi_replace("\[color=silver\]([^\[]+)\[/color\]", "<font color='#C0C0C0'>\\1</font>", $daten);
     $daten = eregi_replace("\[color=red\]([^\[]+)\[/color\]", "<font color='#FF0000'>\\1</font>", $daten);
     $daten = eregi_replace("\[color=lime\]([^\[]+)\[/color\]", "<font color='#00FF00'>\\1</font>", $daten);
     $daten = eregi_replace("\[color=yellow\]([^\[]+)\[/color\]", "<font color='#FFFF00'>\\1</font>", $daten);
     $daten = eregi_replace("\[color=blue\]([^\[]+)\[/color\]", "<font color='#0000FF'>\\1</font>", $daten);
     $daten = eregi_replace("\[color=fuchsia\]([^\[]+)\[/color\]", "<font color='#FF00FF'>\\1</font>", $daten);
     $daten = eregi_replace("\[color=aqua\]([^\[]+)\[/color\]", "<font color='#00FFFF'>\\1</font>", $daten);
     $daten = eregi_replace("\[color=white\]([^\[]+)\[/color\]", "<font color='#FFFFFF'>\\1</font>", $daten);
    
     $daten = eregi_replace("\[size=6\]([^\[]+)\", "<font size=6>\\1</font>", $daten);
     $daten = eregi_replace("\[size=10\]([^\[]+)\", "<font size=10>\\1</font>", $daten);
     $daten = eregi_replace("\[size=12\]([^\[]+)\", "<font size=12>\\1</font>", $daten);
     $daten = eregi_replace("\[size=17\]([^\[]+)\", "<font size=17>\\1</font>", $daten);
     $daten = eregi_replace("\[size=24\]([^\[]+)\", "<font size=24>\\1</font>", $daten);
    
    so also wenn ich jetzt etwas formatieren will klappt das bei einer Formatierung noch gut.
    z.B.:
    Code:
    [s.ize=6]irgentein Text
    wird zu
    Code:
    <font size=6>irgentein Text</font>
    auch mit 2 klappt es allerdings nur in der richtigen Reihenfolge
    Code:
    [s.ize=6][c.olor=green]irgentein Text[/color]
    wird zu
    Code:
    <font size=17><font color='#008000'>irgentein Text</font></font>
    (ich weiß nicht ganz optimal wird aber vom browser richtig dargestellt)

    wenn es allerdings anderst rum ist funktioniert es nur zum teil.
    Code:
    [c.olor=green][s.ize=6]irgentein Text[/color]
    wird zu
    Code:
    [c.olor=green]<font size=6>irgentein Text</font>[/color]
    (Die Punkte ([c.olor=green]) sind nur damit der Code hier nicht umgesetzt wird)

    habt ihr vielleicht ne Idee was ich machen könnte wär euch echt dankbar.

    mfg X-man
     
  2. 12. Mai 2007
    AW: Problem mit BBCode Praser

    shit "bedanken" wollt ich mcih nciht verklickt -.-
    bekomm ich bestimmt wieder n spampunkt für son mist^^
    naja egal also zum problem:

    erstmal vereinfache das doch^^

    also zb:

    $suchen[0] = "\[color=black\]([^\[]+)\[/color\]"
    $ersetzen[0] = "\\1"

    also mit index arbeiten und dann erst am schluss:

    $daten = eregi_replace($suchen, $ersetzen, $daten);

    damit geht er alle indexierte einträge durch.

    damit es egal ist, ob dazwischen andere umcodierungen sind, brauchst du:
    "/Usi"
    (ich glaube das i nciht, wiel es für groß/klein ist und das bei eregi ja schon drinn ist, da ich aber nicht weiß ob es das i war, lass einfach alles 3 drinn )

    also da muss es hin:


    $suchen[0] = "\[color=black\]([^\[]+)\[/color\]/Usi"

    dann sollte es gehen.

    mfg
     
  3. 12. Mai 2007
    AW: Problem mit BBCode Praser

    Danke für die Antwort habs so probiert allerdings wird wenn ich das "/Usi" dranhäng gar nichts mehr ersetzt. (BW haste trotzdem schö mal)

    hm muss doch irgendtwie machbar sein wenn einer ne idee hat bitte posten.
     
  4. 12. Mai 2007
    AW: Problem mit BBCode Praser

    dann machs mal mit:

    preg_replace();

    damit mach ichd as mit der /Usi -Schreibweise, geht 100%

    Warum benutzt du eigentlich: ([^\[]+) ?

    Diese Möglichkeit ist doch viel kürzer und einfacher: (.*)

    mfg
     
  5. 13. Mai 2007
    AW: Problem mit BBCode Praser

    k funktioniert jetzt mir preg_replace alles prima.

    Vielen Dank

    mfg X-man
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.