大驼峰与下划线互相转换
大驼峰: 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), "_"));
}
}