preg_match_all("@##.*?@si", $data, $matches);
Du sagst mit .*?
"lies auf eine nicht gierige Art und Weise möglichst Null oder mehr Zeichen".
Null gelesene Zeichen sind damit ausreichend für einen match.
Du willst aber offenbar _gierig_ möglichst viele Zeichen Lesen, die der Zeichenklasse TextbausteinZeichen angehören.
Definiere also die Zeichenklasse für TextbausteinZeichen
mfg Beat
--
><o(((°> ><o(((°>
<°)))o>< ><o(((°>o
Der Valigator leibt diese Fische
><o(((°> ><o(((°>
<°)))o>< ><o(((°>o
Der Valigator leibt diese Fische