大驼峰与下划线互相转换

2020-03-04  本文已影响0人  简书是什么书

大驼峰与下划线互相转换

大驼峰: OrderDetail / UserInfo / UserLog ...
下划线: order_detail / user_info / user_log ...

1. 大驼峰转下划线

//用正则将所有的大写字母替换成 `_字母`,如 `OrderDetail` 替换成 `_Order_Detail`
preg_replace('/[A-Z]/', '_\\0', 'OrderDetail'); //_Order_Detail 说明:\\0为反向引用

//再取消左边的_
ltrim('_Order_Detail', '_'); //Order_Detail

2. 下划线转大驼峰

//用正则将所有的 `_字母` 替换成`大写字母`,如 `user_info_log` 替换成 `userInfoLog`
preg_replace_callback('/_([a-zA-Z])/', function($m){return strtoupper($m[1]);}, 'user_info_log'); //得到'userInfoLog'

//再将首字母大写
ucfirst('userInfoLog'); //UserInfoLog

3. 封装成一个函数

/*
 * 驼峰转换
 * @param string $name 要转换的字符串
 * @param int $type 转换方式,默认为0; 0:驼峰->下划线  1:下划线->驼峰
 * @return string 转换好的字符串
 */
function parse_name($name, $type=0) {
    if ($type) {
        return ucfirst(preg_replace_callback('/_([a-zA-Z])/', function($match){return strtoupper($match[1]);}, $name));
    } else {
        return strtolower(trim(preg_replace("/[A-Z]/", "_\\0", $name), "_"));
    }
}

上一篇 下一篇

猜你喜欢

热点阅读