Создание анонимных функций из PHP 5.3 работает с PHP 5.2

У меня есть анонимные функции, которые мне теперь нужно обновить, чтобы быть совместимыми с PHP 5.2. Функция (ниже) принимает текст и верхнюю часть первой буквы каждого предложения.

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; } 

Я попытался вытащить функцию, но я получаю сообщение об ошибке, указывающее, что аргумент 2 в обратном вызове отсутствует. Любые идеи о том, как решить эту проблему?

 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; } 

Уведомление об ошибке: Предупреждение: preg_replace_callback () [function.preg-replace-callback]: требуется аргумент 2, 'U S', чтобы быть действительным обратным вызовом

preg_replace_callback() поскольку второй аргумент требует вызываемого, то есть самой функции, а не возвращаемого значения из функции.

Поэтому просто замените upper_case($input) на upper_case , чтобы он выглядел так:

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