#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 + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#5 13. Mai 2007 AW: Problem mit BBCode Praser k funktioniert jetzt mir preg_replace alles prima. Vielen Dank mfg X-man + Multi-Zitat Zitieren