Bei folgender RegEx soll sowohl die Zahl mit px als auch ohne erkannt werden, aber nicht als Backreference gehandelt werden.
Es soll schlussendlich nur zwei Backreferences geben und px kann, muss aber nicht dort stehen, damit der Pattern zutrifft. Wie schaut die Lösung aus?
(Zur meiner Verteidigung: Ich habe wikipedia durchgelesen, die RegEx von hier und google hab ich auch mit Kombination aus reguläre ausdrücke, regular expressions, ignore, ignoriere ausdruck usw usf gefüttert)
PHP-Code:
$text = '[thumb=150px]Bildbeschreibung[/thumb]';
preg_replace('/\[thumb=([0-9]+)(px)?\](.*?)\[\/thumb]/i', '1: $1, 2: $2, 3: $3', $text);
//1: 150, 2: px, 3: Bildbeschreibung
preg_replace('/\[thumb=([0-9]+)p?x?\](.*?)\[\/thumb]/i', '1: $1, 2: $2, 3: $3', $text);
//1: 150, 2: Bildbeschreibung, 3: -- ist aber unschön gelöst
preg_replace('/\[thumb=([0-9]+)[px]?\](.*?)\[\/thumb]/i', '1: $1, 2: $2, 3: $3', $text);
//1: 150, 2: Bildbeschreibung, 3: -- lässt aber auch sachen wie nur 'p', 'x' und 'xp' zu
(Zur meiner Verteidigung: Ich habe wikipedia durchgelesen, die RegEx von hier und google hab ich auch mit Kombination aus reguläre ausdrücke, regular expressions, ignore, ignoriere ausdruck usw usf gefüttert)
Kommentar