駝峰命名和下划線命名互轉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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM