我将如何解决这个问题:
我想像这样转换字符串:
some_words => someWords
some_more_text => someModeText
希望你明白这一点,我需要用X替换每个_x。
我现在有这样的事情:
$string = 'some_words';
$new = preg_replace('/_([a-z])/', strtoupper('$1'), $string);
但这不起作用。我可以在preg_replace函数中使用内置的PHP函数吗?
我该如何解决这个问题?
谢谢!
答案 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)
$string = 'some_words';
$new = preg_replace('/_(.?)/e',"strtoupper('$1')",$string);