我有一个匿名函数,我现在需要更新以与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',是一个 有效的回调
答案 0 :(得分:0)
preg_replace_callback()
作为第二个参数需要一个可调用的,这是一个函数本身,而不是函数的返回值。
所以只需将upper_case($input)
替换为upper_case
,这样看起来就像这样
preg_replace_callback('/([.!?])\s*(\w)/', 'upper_case', ucfirst(strtolower($input)));