用_字符后面的大写字母替换每个_字符

时间:2012-12-05 21:25:25

标签: php regex string

我将如何解决这个问题:

我想像这样转换字符串:

some_words => someWords
some_more_text => someModeText

希望你明白这一点,我需要用X替换每个_x。

我现在有这样的事情:

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

但这不起作用。我可以在preg_replace函数中使用内置的PHP函数吗?

我该如何解决这个问题?

谢谢!

3 个答案:

答案 0 :(得分:5)

您可以使用preg_replace_callback(),如下所示:

$new = preg_replace_callback('/_([a-z])/', function( $match) { 
    return strtoupper( $match[1]);
}, $string);

答案 1 :(得分: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);

答案 2 :(得分:1)

来自man page on ucwords

中的评论
$string = 'some_words';
$new = preg_replace('/_(.?)/e',"strtoupper('$1')",$string);