使用PHP 5.3创建匿名函数与PHP 5.2一起使用

时间:2014-07-25 14:30:37

标签: php anonymous-function

我有一个匿名函数,我现在需要更新以与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',是一个   有效的回调

1 个答案:

答案 0 :(得分:0)

preg_replace_callback()作为第二个参数需要一个可调用的,这是一个函数本身,而不是函数的返回值。

所以只需将upper_case($input)替换为upper_case,这样看起来就像这样

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