如何在下划线后在php正则表达式中制作大写字母

时间:2014-02-19 00:49:11

标签: php regex

我用php中的'firstNameUser'替换first_name_user

我正在尝试这个

$key1 = preg_replace('/_([a-z]?)/', '\U\1', $key);

并且无效

2 个答案:

答案 0 :(得分:3)

$key1 = preg_replace('/_([a-z]?)/e', 'strtoupper("$1")', $key);

但是,这会使用e modifier some issues security implicationsdeprecated as of PHP 5.5.0仍为Caution

  

Use of this modifier is discouraged, as it can easily introduce security vulnerabilites

     

this question

更好用:

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

有关更多示例/代码和信息,请参阅this question和{{3}}。

答案 1 :(得分:0)

替代@roblll回答,如果你不想使用正则表达式,你可以使用:

$str = "some_underscored_text";
$new_str = lcfirst(str_replace(' ', '', ucwords(str_replace('_', ' ', $str))));

echo $new_str;     // Outputs: someUnderscoredText