mmm.... tal ves es mas sencillo de lo que esperabas, debiste investigar... existen mas funciones, y mas potentes!!
una de estas es
preg_replace_callback() simple... buscas las coincidencias, y con tu función de callback asignas los valores de vuelta...
puedes usar una variable estatica para llevar el control de los elementos que reemplazas....
Código PHP:
function foo($match=array())
{
static $i = 0;
$i += 1;
return "Reemplazo($i > $match[0])<br/>";
}
$bar = 'esta es una cadena';
$bar = preg_replace_callback('/./', 'foo', $bar);
echo $bar;
http://www.forosdelweb.com/f18/aport...s-pcre-646110/
suerte!