Thomas: Regex: Doppelter Teil

Beitrag lesen

»» $text="text {array:daten} hallo{/array:daten} vieltext";
»» Jetzt möchte ich alles, was zwischen den array:-Klammern steht auslesen:

»» Problem an der Sache: Wie mache ich dem klar, das ich genau die Angaben will, bei denen hinter dem Doppelpunkt dasselbe steht. Bei einem ersetzen würde müsste es ja mit $1 gehen, wie es beim auslesen gehen soll, weiß ich nicht.

preg_match_all("!{array:([a-zA-Z0-9]*)}(.*?){/array:\2}!",$text,$list);
                 $1     $2             $3 ^ $4      \2

mit \2 statt $1 oder $2
nimm .*? statt .*

Wenn du einen Ausdruck nicht speichern willst, verwende
(?: ) statt ()

mfg Beat

Funktioniert leider nicht:

<?  
  
$text="viel text {array:daten} hallo{/array:daten} vieltext";  
preg_match_all("!{array:([a-zA-Z0-9]*)}(.*?){/array:\2}!",$text,$list);  
  
print_r($list);  
?>

liefert folgendes Ergebnis:

http://vfb-stuttgart.piranho.de/test.php