我从PHP 5.4中的应用程序获得此代码:
$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
并且,我真的不知道如何调整回调,所以它有效^^。
谢谢:),
答案 0 :(得分:1)
该函数必须返回一个字符串,而不是一个数组,它对每个匹配都是相同的函数:
$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