Ich weiß zwar nicht so genau, was du willst, aber villeicht ist das dein Problem:
PHP-Code:
$String "aj aksdfj <b><%jojo%>jfja<%jo%></b>";
$String ereg_replace("#<%(.*)%>#U""\\1"$String);
echo 
$String//Ausgabe: aj aksdfj <b>jojojfjajo</b> 
Wenn du ein U hinter deine RegExp schreibst, werden nur minimale Übereinstimmungen gefunden, heisst es geht nicht vom ersten <% bis zum letzten %>