Phil: Warum funzt dieses eregi_replace nicht?

Hi!
Ich fummle noch an meinem GB und bis vor ner Stunde lief alles super. Seitdem knoble ich über diesem Problem:

$eintrag=eregi_replace("[FONT=(.*)](.*)[/FONT]","<font face="\1">\2</font>",$eintrag);

Was soll da passieren?
Es wird als Beispiel
[FONT=Comic Sans MS]Hallo[/FONT]
hingeschickt und rauskommen sollte eigentlich am Ende
<font face="Comic Sans MS">Hallo</font>

AAAAAAAABER: Hat man mehrere solcher [FONT=..]-Dinger hintereinander, so wird das erste erkannt und das letzte, das dazwischen nicht...
Beispiel:
[FONT=Comic Sans MS]Hallo[/FONT][FONT=Arial]Peace[/FONT]
ergibt bei mir
<font face="Comic Sans MS]Hallo[/FONT][FONT=Comic Sans MS">Hallo</font>

Dass da keine Schriftformatierung rauskommt und ausser Hallo da nix steht, brauche ich ja wohl nicht erwähnen...

Und nun?!
Könnt ihr mir mal bitte weiterhelfen?
DAnke ;)
CU
http://www.yubb.de

  1. Hallo!

    $eintrag=eregi_replace("[FONT=(.*)](.*)[/FONT]","<font face="\1">\2</font>",$eintrag);

    Was soll da passieren?
    Es wird als Beispiel
    [FONT=Comic Sans MS]Hallo[/FONT]
    hingeschickt und rauskommen sollte eigentlich am Ende
    <font face="Comic Sans MS">Hallo</font>

    AAAAAAAABER: Hat man mehrere solcher [FONT=..]-Dinger hintereinander, so wird das erste erkannt und das letzte, das dazwischen nicht...
    Beispiel:
    [FONT=Comic Sans MS]Hallo[/FONT][FONT=Arial]Peace[/FONT]
    ergibt bei mir
    <font face="Comic Sans MS]Hallo[/FONT][FONT=Comic Sans MS">Hallo</font>

    kommt daher, das (.*) für ALLE Zeichen steht! Wenn es aber nur Buchstaben und leerzeichen sind, probiers mal so:
    ([a-zA-Z ]+)

    Grüße
    Andreas

    1. Jo, soweit hin funzt es!
      nun habe ich
      $eintrag=eregi_replace("[FONT=([a-zA-Z ]+)]([a-zA-Z ]+)[/FONT]","<font face="\1">\2</font>",$eintrag);
      was auch gut funktioniert, wenn einer wirklich nur Text eingibt (\2), aber es gibt doch auch Punkte, Kommata, Semikola und was weiß ich denn nicht alles so!

      Ich hoffe mein Grundanliegen ist verstanden, aber der User muss alles eingeben dürfen und trotzdem muss es funzen (das muss doch gehen)!
      CU

      1. Jo, soweit hin funzt es!
        nun habe ich
        $eintrag=eregi_replace("[FONT=([a-zA-Z ]+)]([a-zA-Z ]+)[/FONT]","<font face="\1">\2</font>",$eintrag);
        was auch gut funktioniert, wenn einer wirklich nur Text eingibt (\2), aber es gibt doch auch Punkte, Kommata, Semikola und was weiß ich denn nicht alles so!

        Ich hoffe mein Grundanliegen ist verstanden, aber der User muss alles eingeben dürfen und trotzdem muss es funzen (das muss doch gehen)!
        CU

        vielleicht versuchts du es mit dem nicht ersetzen [^]. Zum Beispiel jetzt

        [FONT=([a-zA-Z ]+)]([^#¬|¦]+)[/FONT]

        Dann werden alle Zeichen genommen ausser #¬|¦

        mfg
        teal

      2. Versuch mal:

        ("[FONT=(.*?)](.*?)[/FONT]"

        (.*?) ist dasselbe wie (.*) mit dem Unterschied, das (.*) die erste und letze Begrenzung nimmt, (.*?) die erste und zweite.

        Sorry, war ich gerad enicht drauf hgekommen ;-)

        Grüße
        Andreas

        PS: Muß man wirklich [] mit \ schützen?