preg_match() mit Backreference

tobee

Erfahrenes Mitglied
Ich habe eine Datei die ungefähr so aus sieht:
[1]
[nick:tobee]
[pass:tobee]
[mail:tobiasoberrauch@gmx.de]
[/1]
[2]
[nick:admin]
[pass:admin]
[mail:admin@gmx.de]
[/2]
Ich möchte gerne den Bereich von [1] bis [/1] extrahieren.
Bis jetzt hab ich die Überprüfung so gemacht:
PHP:
echo $str = preg_match( "/\[\d\]*\[\d\]/" , $content );

Jetzt habe ich im Internet was von Backreference gelesen und wollte fragen ob das für mich in Frage kommt oder ob ich das anders lösen könnte?
Backreferences

Backreferences sind Rückbezüge, sie beziehen sich also auf einen vorangegangenen Teil des Patterns (in runden Klammern) und enthalten deren Inhalt. Es gibt zwei Syntaxes, die neuere davon ist $n, wobei n für die n-te Klammerngruppe steht.

Beispiel:

!(<b>|<i>)(.*?)(</$1>)! trifft auf "<b>text</b>" und "<i>text</i>" zu, aber nicht auf "<b>text</i>".

Am nützlichsten sind Backreferences jedoch bei Ersetzungsoperationen mit preg_replace():

$str = preg_replace("!-anfang-(.*?)-ende-!","<anfang>$1<ende>",$str);

Dieses Konstrukt würde also z.B. die Zeichenkette "-anfang-text hier-ende-" durch "<anfang>text hier<ende>" ersetzen.
 
Bei meinem "Experiment" kommt leider NEIN raus:
PHP:
echo $str = preg_match( "/\[(\d+)\].*\[\/$1\]/" , "[1][nick:tobee][pass:tobeePW][mail:tobiasoberrauch@gmx.de][/1]" ) ? "JA" : "NEIN";
 
Zurück