Dieter: Grosses preg_replace - Problem...

Beitrag lesen

Hallo,

leider komme ich mit meinem bescheidenen Regexp-Kenntnissen seit Tagen nicht weiter.
Ich möchte einen Stringbereich zwischen zwei Begrenzungswerten (in diesem Fall doppelte eckige Klammern) austauschen, sowie den ursprünglichen Inhalt in einem Array speichern.
Da sich der Inhalt (der auszutauschende) noch durch eine Regel (Trennzeichen "|") unterscheiden kann, wollte ich zwei nachfolgend arbeitende Pattern verwenden, scheitere aber
leider schon an der Regel:

$pfad = "PFAD";
$pattern = '/[[(.*)|(.*)]]/eisU';
$ersatz = '<a href="'.$pfad.'/\1">\2</a>';
$string = preg_replace($pattern, $ersatz, $string);

Folgendes Ergebnis soll rauskommen:

Originalstring: Das ist ein Testsatz. Dieser Testsatz ist in einem [[String]] gespeichert und soll via preg_replace [[Arbeit|bearbeitet]] werden - leider sind aber meine bisherigen [[Bemühung|Bemühungen]] recht erfolglos.
Ergebnis: Das ist ein Testsatz. Dieser Testsatz ist in einem <a href="PFAD/String">String</a> gespeichert und soll via preg_replace <a href="PFAD/Arbeit">bearbeitet</a> werden - leider sind aber meine bisherigen <a href="PFAD/Bemühung">Bemühungen</a> recht erfolglos.

Nur leider bekomme ich das nicht hin. Mit dem Suchmuster bekomme ich folgendes Ergebnis:
Das ist ein Testsatz. Dieser Testsatz ist in einem <a href="PFAD/String]] gespeichert und soll via preg_replace [[Arbeit">bearbeitet</a> werden - leider sind aber meine bisherigen <a href="PFAD/Bemühung">Bemühungen</a> recht erfolglos.

Ich komme einfach nicht weiter und möchte daher um eure Mithilfe bitten:
a) wo ist mein Fehler bzw. was muß ich an der regexp verändern (bitte wenn möglich auch mit Erklährung, damit ich auch verstehe was falsch gelaufen ist)
b) wie kann ich zudem den Wert "\1" in ein Array bekommen ?

MfG
Dieter