[RegEx] Sehe Fehler nicht

chmee

verstaubtes inventar
Premium-User
Hi, Helfer der elektronischen Nation.

Folgend, ich möchte im bbcode [ quote:***="***" ] und [ /quote ] ersetzen, bzw das was dazwischen steht, mit anderen HTML-Tags einrahmen. Also RegEx :)

Source-Beispiel :
Code:
...testen[quote:b23e89fe69="Chmee"]Dich will ich[/quote:b23e89fe69]testen...
Bis nun bin ich mit dem RegEx-Coach und n paar Tuts zu dieser Expression vorangeschritten:
Code:
\[quote:(.*)\](.*)\[/quote:(.*)\]
Damit bekomme ich dann in $2 meinen Text, dem ich andere Tags anheften kann.
Leider passiert nichts in php, anstatt dessen wird gar nichts mehr ausgegeben,
daraus schließe ich einen Fehler in der php-Zeile:

Code:
$bb = preg_replace('\[quote:(.*?)\](.*)\[/quote:(.*?)\]',$2, $bb);
Kanns mir jemand erklären, uU habt Ihr eine bessere Idee..

mfg chmee
 
Zuletzt bearbeitet:
Erstmal Danke.
Grob verstehe ich, was da passiert, aber Online ist [ quote ] immer noch existent.hmm
Wo ist der Unterschied zwischen \3 und $3 ? Wann Dieses, wann Jenes ?

http://bf2.phreekz.de

mfg chmee

**EDIT**
Habe mich nochmal mit dem RegExCoach rangesetzt und siehe da, er hat auch nicht zu Ende
kauen können. Das ist jetzt die Version die bei mir funktioniert:
PHP:
$bb = preg_replace('/\[quote:([0-9a-f]+)="([^"]+)"\]([^\[]+)\[\/quote:([0-9a-f]+)\]/', 'Zitat $2<br/>$3', $bb);
Musste aus
Code:
.* (Alles) ein 
^\[ (Alles außer [ )

machen und habe hinten die \1 Variable einfach durch das Muster ersetzt.
 
Zuletzt bearbeitet:
Musste diesen Fred doch nochmal öffnen,

Code:
\b(http[^\s]+)
wollte ich benutzen, um Links aufzuspüren, aber entweder es geht gar nicht,
oder es wird NICHTS als Rückgabewert zurückgegeben.

Falsche Formulierung ? Bessere Idee ?

Wichtig ist die Beachtung von Boundary/Whitespace.

mfg chmee
 
Zurück