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

或者,如果您不想使用正则表达式,您可以简单地使用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 回答
1

手册页中的评论ucwords

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