2

これを解決するにはどうすればよいですか:

次のように文字列を変換したい:

some_words => someWords
some_more_text => someModeText

ポイントを理解していただければ幸いです。すべての _x を X に置き換える必要があります。

私は今このようなものを持っています:

$string = 'some_words';
$new = preg_replace('/_([a-z])/', strtoupper('$1'), $string);

しかし、これはうまくいきません。preg_replace 関数内で組み込みの PHP 関数を使用できますか?

どうすればこれを解決できますか?

ありがとう!

4

3 に答える 3

5

preg_replace_callback()次のように使用できます。

$new = preg_replace_callback('/_([a-z])/', function( $match) { 
    return strtoupper( $match[1]);
}, $string);
于 2012-12-05T21:28:38.247 に答える
1

のマニュアルページのコメントからucwords

$string = 'some_words';
$new = preg_replace('/_(.?)/e',"strtoupper('$1')",$string); 
于 2012-12-05T21:58:30.893 に答える
1

または、正規表現を使用したくない場合は、次のように単純に行うことができますexplode/implode

$string = 'some_words';
$string_array = explode('_', $string);
for ($i = 1; $i < count($string_array); $i++) {
    $string_array[$i] = ucfirst($string_array[$i]);
}
$string_camel_case = implode('', $string_array);
于 2012-12-05T21:54:14.877 に答える