网上其实已经有很多这种方法了,今天在thinkphp源码中看到了他的实现,感觉还是很巧妙的,记录一下
<?php
/**
* 下划线命名风格转换成驼峰命名风格
* @param $string
* @param bool $ucfirst 转换后首字母是否大写
* @return mixed|string
*/
function parseCamel($string, $ucfirst = false)
{
//替换过程 name_style => _s => s => S => nameStyle
$string = preg_replace_callback('/_([a-zA-Z])/', function ($match) {
return strtoupper($match[1]);
}, $string);
return $ucfirst ? ucfirst($string) : $string;
}
/**
* 驼峰命名风格转换成下划线命名风格
* @param $string
* @return string
*/
function parseUnderline($string)
{
//替换过程 NameStyle => N | S => _N | _S => _Name_Style => Name_Style => name_style
$string = strtolower(trim(preg_replace("/[A-Z]/", "_\\0", $string), "_"));
return $string;
}
echo parseCamel('name_style') . "\n"; //输出 nameStyle
echo parseCamel('name_style', true) . "\n"; //输出 NameStyle
echo parseUnderline('NameStyle') . "\n"; //输出 name_style