驼峰命名和下划线命名互转php实现

驼峰命名和下划线命名经常需要互转,下面提供两种php的实现方式.
第一种方法效率相对差一些,实现方式如下:

 1   //驼峰命名转下划线命名
 2     function toUnderScore($str)
 3     {
 4         $dstr = preg_replace_callback('/([A-Z]+)/',function($matchs)
 5         {
 6             return '_'.strtolower($matchs[0]);
 7         },$str);
 8         return trim(preg_replace('/_{2,}/','_',$dstr),'_');
 9     }
10 
11     //下划线命名到驼峰命名
12     function toCamelCase($str)
13     {
14         $array = explode('_', $str);
15         $result = $array[0];
16         $len=count($array);
17         if($len>1)
18         {
19             for($i=1;$i<$len;$i++)
20             {
21                 $result.= ucfirst($array[$i]);
22             }
23         }
24         return $result;
25     }

第二种方法更为巧妙高效,推荐使用第二种方法

 1   /**
 2   * 下划线转驼峰
 3   * 思路:
 4   * step1.原字符串转小写,原字符串中的分隔符用空格替换,在字符串开头加上分隔符
 5   * step2.将字符串中每个单词的首字母转换为大写,再去空格,去字符串首部附加的分隔符.
 6   */
 7     function camelize($uncamelized_words,$separator='_')
 8     {
 9         $uncamelized_words = $separator. str_replace($separator, " ", strtolower($uncamelized_words));
10         return ltrim(str_replace(" ", "", ucwords($uncamelized_words)), $separator );
11     }
12 
13   /**
14   * 驼峰命名转下划线命名
15   * 思路:
16   * 小写和大写紧挨一起的地方,加上分隔符,然后全部转小写
17   */
18     function uncamelize($camelCaps,$separator='_')
19     {
20         return strtolower(preg_replace('/([a-z])([A-Z])/', "$1" . $separator . "$2", $camelCaps));
21     }

转自:http://www.jianshu.com/p/773fd334052f

posted @ 2017-12-06 09:33  huohuohiahia  阅读(11363)  评论(0编辑  收藏  举报