Hi Carole,
preg_match_all('/{var*}/', $text, $var, PREG_SET_ORDER);
Ein Sternchen bedeutet, dass das Zeichen oder die Zeichenklasse auf die es sich bezieht beliebig oft vorkommen darf (siehe PHP Manual), dein RegEx macht also so ziemlich alles von {va} bis {varrrrrrrrr} (und noch viel mehr).
Für ein beliebiges Zeichen steht der Punkt - du könntest also .* statt nur dem Sternchen verwenden. Doch auch das würde nicht zum Ziel führen, da dann "{var123} {var456}" komplett durch $var ersetzt würde (der Punkt passt eben auch auf "} {" und RegEx sind standardmäßig gefräßig).
Du musst also eine Zeichenklasse definieren, die alle Zeichen außer } enthält, das geht mit [^}] - alles in allem könnte es z.B. so aussehen:
preg_match_all('/\{var[^\}]*\}/', $text, $var, PREG_SET_ORDER);
Ich bin mir allerdings gerade nicht sicher, ob das escapen der geschwungenen Klammer innerhalb der Zeichenklasse notwendig ist, weil die Klammer dort eigentlich keine Sonderbedeutung hat...
MfG, Dennis.