是否有一种有效的方法来更改以下文本模式。可能是一种正则表达方式。
我有一个文字abc_def_ghi_jkl
,依此类推。我想将其替换为AbcDefGhiJkl
。目前我使用以下代码来更改它。是否有一些有效的方法。
implode('',array_map('ucfirst',explode('_',$string)));
感谢。
答案 0 :(得分:1)
如果您需要正则表达式解决方案,则需要回调。所以你走了:
$input = 'abc_def_ghi_jkl';
$output = preg_replace_callback('~([^_]+)_?~', function($m){
return ucfirst($m[1]);
}, $input);
var_dump($output);
正则表达式解释:
~
是正则表达式分隔符。([^_]+)
匹配任何不是下划线一次或多次的内容并将其放入第1组。_?
匹配可选的下划线。这是针对字符串结尾的情况。