Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php preg_replace、preg_replace_回调和数组到字符串转换_Php_Regex_Zend Framework_Preg Replace_Preg Replace Callback - Fatal编程技术网

Php preg_replace、preg_replace_回调和数组到字符串转换

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')"

我从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')"
            ), $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
另见