Hacer funciones anónimas desde PHP 5.3 trabajar con PHP 5.2

Tengo funciones anónimas que ahora necesito actualizar para que sean compatibles con PHP 5.2. La función (a continuación) toma texto y mayúsculas la primera letra de cada oración.

function clean_text($input) { $output = $input; $output = preg_replace_callback('/([.!?])\s*(\w)/', function ($matches) { return strtoupper($matches[1] . ' ' . $matches[2]); }, ucfirst(strtolower($input))); return $output; } 

Intenté sacar la función, pero recibo un error que indica que el argumento 2 en la callback ahora falta. ¿Alguna idea de como resolver esto?

 function clean_text($input) { function upper_case($input) { return strtoupper($input[1] . ' ' . $input[2]); } $output = preg_replace_callback('/([.!?])\s*(\w)/', upper_case($input), ucfirst(strtolower($input))); return $output; } 

Aviso de error: Advertencia: preg_replace_callback () [function.preg-replace-callback]: Requiere que el argumento 2, ‘U S’, sea una callback válida

preg_replace_callback() como segundo argumento requiere un invocable, que es una función en sí misma, no un valor devuelto de una función.

Así que simplemente reemplace, upper_case($input) con upper_case , así se vería así

 preg_replace_callback('/([.!?])\s*(\w)/', 'upper_case', ucfirst(strtolower($input)));