網(wǎng)上其實(shí)已經(jīng)有很多這種方法了,今天在thinkphp源碼中看到了他的實(shí)現(xiàn),感覺還是很巧妙的,記錄一下
<?php
/**
* 下劃線命名風(fēng)格轉(zhuǎn)換成駝峰命名風(fēng)格
* @param $string
* @param bool $ucfirst 轉(zhuǎn)換后首字母是否大寫
* @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;
}
/**
* 駝峰命名風(fēng)格轉(zhuǎn)換成下劃線命名風(fēng)格
* @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