用某种模式替换文本的有效方法

时间:2014-04-30 12:04:49

标签: php regex

是否有一种有效的方法来更改以下文本模式。可能是一种正则表达方式。

我有一个文字abc_def_ghi_jkl,依此类推。我想将其替换为AbcDefGhiJkl。目前我使用以下代码来更改它。是否有一些有效的方法。

implode('',array_map('ucfirst',explode('_',$string)));

感谢。

1 个答案:

答案 0 :(得分:1)

如果您需要正则表达式解决方案,则需要回调。所以你走了:

$input = 'abc_def_ghi_jkl';

$output = preg_replace_callback('~([^_]+)_?~', function($m){
    return ucfirst($m[1]);
}, $input);

var_dump($output);

正则表达式解释:

    在这种情况下,
  • ~是正则表达式分隔符。
  • ([^_]+)匹配任何不是下划线一次或多次的内容并将其放入第1组。
  • _?匹配可选的下划线。这是针对字符串结尾的情况。

Online php demo