我该如何着手解决这个问题:
我想像这样转换字符串:
some_words => someWords
some_more_text => someModeText希望你明白了,我需要用X替换所有的_x。
我现在有了这样的东西:
$string = 'some_words';
$new = preg_replace('/_([a-z])/', strtoupper('$1'), $string);但这是行不通的。我可以在preg_replace函数中使用内置的PHP函数吗?
我该如何解决这个问题?
谢谢!
发布于 2012-12-06 05:28:38
可以使用preg_replace_callback(),如下所示:
$new = preg_replace_callback('/_([a-z])/', function( $match) {
return strtoupper( $match[1]);
}, $string);发布于 2012-12-06 05:54:15
或者,如果您不想使用正则表达式,则可以简单地使用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-06 05:58:31
从man page on ucwords中的注释
$string = 'some_words';
$new = preg_replace('/_(.?)/e',"strtoupper('$1')",$string); https://stackoverflow.com/questions/13732738
复制相似问题