L
Hi,
ok, das kann ich natürlich machen. Ich bin zu dem Schluss gekommen, dass es für mich nicht möglich ist, solch einen Regulären Ausdruck zu finde, weil ich mich damit einfach nicht genug auskenne. Ich habe das dann in zwei Schritten gemacht. Die Teile zwischen [[ und ]] sondiert und dort dann die Ersetzung durchgeführt.
Ich habe noch ein weiteres Ziel gehabt, und zwar, dass wenn man ein Slash vor das Dollarzeichen setzt, die "Variable" nicht umgewandelt wird.
Also bei "bla$bla [[lala blubbblabla/blubb blabla /blubbblabla/haha]]...", dass $haha nicht umgewandelt wird.
$string='bla$bla [[lala $blubb blabla /$haha]]...';
$count=preg_match_all('/[[(.*?)]]/', $string, $treffer); // Die Teile zwischen [[ und ]] finden
$treffer[]=preg_replace('/(?<!\/)\$([_a-z0-9]+)/i', 'ersetzten mit', $treffer[0]); // Die "Variablen" ersetzten, denen nicht ein Slash vorangeht
$treffer[2]=preg_replace('/\/\$/', '$', $treffer[2]); // Slashs vor Dollarzeichen werden entfernt
for($i=0; $i<$count; ++$i)
$string=str_replace($treffer[0][$i], $treffer[2][$i], $string); // Ersetzung der Teile [[ ... ]] im ursprünglichen String
Man könnte noch gleiche [[...]] Teile rausfiltern, damit dafür nur einmal die Funktion str_replace() aufgerufen wird,
Bis jetzt hat das bei mir alles funktioniert. Aber vlt. gibts ja noch ein paar Schwachstellen...
Grüßle
Jan