mira... este es un ejemplo algo sencillo:
Código PHP:
$foo = 'candy bar does nothing else more with all';
$bar = preg_replace('/(bar|all)/ei', 'baz_buzz("\\0");', $foo);
echo $bar;
function baz_buzz($bazzinga)
{
if ($bazzinga != 'bar') return strtoupper($bazzinga);
return 'BAD&MAD';
}
alguna idea te dará... ;)