Php preg_replace、preg_replace_回调和数组到字符串转换
我从PHP5.4中的一个应用程序中获得了以下代码:Php preg_replace、preg_replace_回调和数组到字符串转换,php,regex,zend-framework,preg-replace,preg-replace-callback,Php,Regex,Zend Framework,Preg Replace,Preg Replace Callback,我从PHP5.4中的一个应用程序中获得了以下代码: $rightKey = preg_replace(array( "/(_)(\p{L}{1})/eu", "/(^\p{Ll}{1})/eu" ), array( "mb_strtoupper('\\2', 'UTF-8')", "mb_strtoupper('\\1', 'UTF-8')"
$rightKey = preg_replace(array(
"/(_)(\p{L}{1})/eu",
"/(^\p{Ll}{1})/eu"
), array(
"mb_strtoupper('\\2', 'UTF-8')",
"mb_strtoupper('\\1', 'UTF-8')"
), $key);
因为preg_replace已被弃用,所以它没有很好地工作。我做了一些研究,把它变成:
$rightKey = preg_replace_callback(array(
"/(_)(\p{L}{1})/u",
"/(^\p{Ll}{1})/u"
), function($m) { return array(
"mb_strtoupper('\\2', 'UTF-8')",
"mb_strtoupper('\\1', 'UTF-8')"
); }, $key);
我将函数更改为preg_replace_callback,删除了“e”,并添加了一个回调
但现在我有:
Array to string conversion
而且,我真的不知道如何调整回调以使其工作^^
谢谢:),函数必须返回字符串,而不是数组,每个匹配项都是相同的函数:
$key = 'abc _def';
$rightKey = preg_replace_callback(array(
"/_(\p{L})/u",
"/(^\p{Ll})/u"
),
function($m) {
return mb_strtoupper($m[1], 'UTF-8');
},
$key);
echo $rightKey;
输出:
Abc Def
另见