2

にpreg_replace_callbackと配列は、私はPHP 5.4でアプリから、このコードを持っている:にpreg_replace、文字列変換

$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が推奨されませんので、それはうまく動作しませんでした。私はいくつかの研究を行なったし、にそれを回し:私はpreg_replace_callbackする機能を変更

$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); 

、私は「e」を削除し、私は、コールバックを追加しました。

しかし、今私が持っている:私は本当にそれが^^働くので、コールバックを適応させる方法がわからない、

Array to string conversion 

と。

おかげ:)、

答えて

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