Sorry, war ungetestet. Hier mal eine korrigierte Version:
PHP-Code:
$String "aj aksdfj <b><%jojo%>jfja<%jo%></b>";
preg_match_all("#<%(.*)%>#U"$String$ergebnissePREG_SET_ORDER);
foreach(
$ergebnisse as $ergebnis)
  
$String str_replace("<%".$ergebnis[1]."%>"$ergebnis[1], $String);
echo 
$String//Ausgabe: aj aksdfj <b>jojojfjajo</b> 
Das Problem ist, das bei den ereg-Sachen die PCRE-Modifiers nicht berücksichtigt zu werden scheinen. Das heisst, man kann dem Teil nicht sagen, es soll nicht so gierig sein Also muss imo eine kompliziertere Version her...