加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – pre_replace一个字符串,用于大写下划线后面的每个单词

发布时间:2020-12-13 21:49:28 所属栏目:PHP教程 来源:网络整理
导读:这是一个示例字符串: hello_world_again 所以它将被转换为: HelloWorldAgain 所以它应该能够删除下划线并将下一个字母大写.第一个字母也应该大写.我发现了这个:preg_replace(‘/(?lt ;!)(?!^)[A-Z] /','_ $0',$val) 但现在我想扭转这个过程.非常感谢!
这是一个示例字符串:
hello_world_again

所以它将被转换为:
HelloWorldAgain

所以它应该能够删除下划线并将下一个字母大写.第一个字母也应该大写.我发现了这个:preg_replace(‘/(?&lt ;!)(?<!^)[A-Z] /','_ $0',$val) 但现在我想扭转这个过程.非常感谢!谢谢!

解决方法

单独的正则表达式在这里不起作用.但是,您可以使用 preg_replace_callback

$val = 'hello_world_again';
function match_toupper($m) {
    return strtoupper($m[1]);
}
$val = preg_replace_callback('/(?:^|_)([a-z])/','match_toupper',$val);
echo $val; // HelloWorldAgain

在PHP 5.3或更高版本中,也可以使用anonymous function:

$val = 'hello_world_again';
$val = preg_replace_callback('/(?:^|_)([a-z])/',function ($m) {
        return strtoupper($m[1]);
    },$val);
echo $val; // HelloWorldAgain

此外,如果您忽略有关e modifier的所有警告和注意事项,这也将起作用:

$val = 'hello_world_again';
$val = preg_replace('/(?:^|_)([a-z])/e','strtoupper($1)',$val);
echo $val; // HelloWorldAgain

这是另一种完全避免使用正则表达式的解决方案:

$val = 'hello_world_again';
$val = implode('',array_map(ucfirst,explode('_',$val)));
echo $val; // HelloWorldAgain

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读