У меня есть анонимные функции, которые мне теперь нужно обновить, чтобы быть совместимыми с 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)));